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);
და აღარ იზავს.
ამის გარდა ყველას უნიკალური პაროლი რომ ქონდეს შეგიძლია ეს დაგენერირებული პაროლები შეყარო ჰეშსეტში და მერე იქიდან წაიკიტხო და მიანიჭო.
ასეთ შემთხვევაში გარანტირებულად გექნება ყველა პაროლი უნიკალური .

პ.ს. ცოტა ძველ თემას კი ვაცოცხლებ მარა ეხლა ვნახე, დიდიალბათობით მოგვარებული ექნება ეს პრობლემა biggrin.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)