Printable Version of Topic
Click here to view this topic in its original format |
თბილისის ფორუმი > პროგრამირება > შეკითხვა |
Posted by: temoize 17 Oct 2017, 01:07 |
გამარჯობა, C# დავწერე პროგრამა რომელმაც უნდა დააგენერიროს რანდომად პაროლი. სახლის კოპიუტერზე, ანუ იმ კომპიუტერზე სადაც პროგრამა დავწერე, პროგრამა კარგად მუშაობს, მაგრამ რომ მიმაქვს სხვა კომპიუტერზე იქ ურევს ერთიდაიგივე პაროლს ანიჭებს სხვადასხვა იუზერებს. რისი ბრალი შეიძლება იყოს? ეგაა რომ სახლის კომპიუტერზე მიყენია WINDOWS 8 ხოლო იმ კომპიუტერზე სადაც პროგრამამ უნდა იმუშაოს აყენია WINDOWS 7, ასევე სახლის კომპიუტერზე ლოკალურად მაქვს დაინსლტალირებული sqlexpress2014 ხოლო სადაც უნდა იმუშაოს იქ სერვერი ცალკე აყენია. რომე შევიყვან ერთად ბევრ იუზერს პაროლებს ამეორებს ამ სიხშირით: PpvSZjsJY9AqyfmT z1E72TC9IDRPw3ye GObyR6wUjtfZX12C GObyR6wUjtfZX12C whMVzEueTQrOI7tR whMVzEueTQrOI7tR whMVzEueTQrOI7tR 1Gz9yPNOv8ujxcWQ mWawzF3plL7BcVIf mWawzF3plL7BcVIf mWawzF3plL7BcVIf CovQUDrapdYWFiIj CovQUDrapdYWFiIj SIMFlZCJqLPa75rp SIMFlZCJqLPa75rp SIMFlZCJqLPa75rp 8gwrUL79DvGholjs |
Posted by: execution 17 Oct 2017, 01:28 |
temoize ეგრე ვინ მიხვდება რაშია პრობლემა. debugger ს გაჰყევი. |
Posted by: ბიჭური 17 Oct 2017, 08:34 |
temoize ცოტა მეტი დეტალი რომ დაგეწერა, რა პრინციპით ხდება პაროლის გენერაცია და ა.შ, შეიძლება დაგეხმაროთ კიდე-ც! კოდის ნაწილიც არ იქნებოდა ცუდი |
Posted by: temoize 17 Oct 2017, 09:04 |
იმ კომპიუტერზე სადაც პროგრამა დაიწერა აყენია WIN8 და პროგრამა კარგად მუშოაბს, მაგრამ იმაზე სადაც პოგრამა უნდა მუშაობდეს WIN7 არის იქ, WIN7-ზე დებაგინგს ვერ გავაკეთებ ვიზუალ სტუდიო არაა. ეს სამი მეთოდი მაქვს პაროლის დასაგენერირებლად. სამივე მეთოდი ერთნაირად ურევს WIN7-ზე. static string PasswordGenerator() { string randomstring = string.Empty; char[] array = "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM".ToCharArray(); Random r1 = new Random(); for (int i = 0; i < 16; i++) { int point = r1.Next(1, array.Length); if (!randomstring.Contains(array.GetValue(point).ToString())) { randomstring += array.GetValue(point); } else i--; } return randomstring; } -------------------------------------------------------------------------------------------------------------------------- static string PasswordGenerator() { int length = 16; const string valid = "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"; StringBuilder res = new StringBuilder(); Random rnd = new Random(); while (0 < length--) { res.Append(valid[rnd.Next(valid.Length)]); } return res.ToString(); } -------------------------------------------------------------------------------------------------------------------------- private string PasswordGenerator() { int size = 16; StringBuilder builder = new StringBuilder(); Random random = new Random(); char ch; for (int i = 0; i < size; i++) { ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))); builder.Append(ch); } return builder.ToString(); } |
Posted by: zgarb7 18 Oct 2017, 10:19 |
temoize ეს რო გამოიყენო არა? System.IO.Path.GetRandomFileName().Replace(".", "") |
Posted by: execution 18 Oct 2017, 20:40 |
temoize new random ფუნქციის გარეთ შექმენი აბა, როგორც გლობალი. და random.next ები იძახე უბრალოდ ფუნქციაში. ანუ ერთხელ შექმენი მარტო random ის instance და მერე მერე ამ ინსთანსზე გამოიძახე ხოლმე .next() constructor ს რამდენჯერაც იძახებ თავიდან მოაქვს seed ი system clock იდან, და შეიძლება ემთხვევა ხოლმე. |
Posted by: temoize 19 Oct 2017, 22:33 |
new random-ის გარეთ გატანამ უშველა. მადლობა დახმარებისთვის. |
Posted by: zgarb7 19 Oct 2017, 22:47 |
ნუბური შეკითხვები asp.net mvc-ში კითხვები მაქვს დაწერილი და სანამ თემას არ გავხსნი მეც არ მიპასუხებენ ალბათ. |
Posted by: elodin 20 Oct 2017, 11:30 |
რანდომ ობიექტი ზემოთ შექმენი და მხოლოდ next იძახე ყოველ ჯერზე. |
Posted by: N1K4 9 Nov 2017, 11:07 |
ახალი სტრინგის დაგენერირებისას ჩაამატე დროის ლიმიტი. ანუ სტრინგიდან სტრინგის დაგენერირებამდე ლუპში ჩატენე დაყოვნება. System.Threading.Thread.Sleep(100); და აღარ იზავს. ამის გარდა ყველას უნიკალური პაროლი რომ ქონდეს შეგიძლია ეს დაგენერირებული პაროლები შეყარო ჰეშსეტში და მერე იქიდან წაიკიტხო და მიანიჭო. ასეთ შემთხვევაში გარანტირებულად გექნება ყველა პაროლი უნიკალური . პ.ს. ცოტა ძველ თემას კი ვაცოცხლებ მარა ეხლა ვნახე, დიდიალბათობით მოგვარებული ექნება ეს პრობლემა |