PDA

View Full Version : مبتدی: ایجاد عدد و حروف (Random) یا ...



aspismylove
شنبه 12 شهریور 1390, 13:13 عصر
سلام دوستان خسته نباشید ...

ببخشید یک سئوال خیلی ساده و مسخره داشتم و اون هم این که :

من میخام کاربر وقتی ثبت نام کرد رمز عبور براش فرستاده بشه و بعد میخام که رمز عبور بصورت تصادفی و مثلا 10 کارکتری باشه !!!!

حالا میخام که یک رمز عبور 10 کارکتری تولید کنم , ممنون میشم راهنمایی کنید !!

:ناراحت::ناراحت:

mehdi.mousavi
شنبه 12 شهریور 1390, 13:31 عصر
سلام دوستان خسته نباشید ...
ببخشید یک سئوال خیلی ساده و مسخره داشتم و اون هم این که :
من میخام کاربر وقتی ثبت نام کرد رمز عبور براش فرستاده بشه و بعد میخام که رمز عبور بصورت تصادفی و مثلا 10 کارکتری باشه !!!!
حالا میخام که یک رمز عبور 10 کارکتری تولید کنم , ممنون میشم راهنمایی کنید !!
:ناراحت::ناراحت:


سلام.
می تونید بدین شکل عمل کنید:

string myPass = System.Web.Security.Membership.GeneratePassword(10 , 0);

موفق باشید.

aspismylove
شنبه 12 شهریور 1390, 14:07 عصر
سلام.
می تونید بدین شکل عمل کنید:

string myPass = System.Web.Security.Membership.GeneratePassword(10 , 0);

موفق باشید.
مثل اینکه یک اشتباه پیش اومده !!!!
ببخشید من با ممبرشیپ استفاده نمیکنم , فقط به من بگید که چطوری من یک کلمه 10 کارکتری تصادفی ایجاد کنم !!!

ممنون (راستی من با VB مینویسم)

Saman Hashemi
شنبه 12 شهریور 1390, 14:21 عصر
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
var random = new Random();
var result = new string(
Enumerable.Repeat(chars, 8)
.Select(s => s[random.Next(s.Length)])
.ToArray());

البته توي اين پست (http://stackoverflow.com/questions/1344221/how-can-i-generate-random-8-character-alphanumeric-strings-in-c)روش هاي ديگه اي هم هست...!

cardano7
شنبه 12 شهریور 1390, 14:28 عصر
شما مي تونيد راحت يک کلمه ي تک کاراکتري ايجاد کنيد. با يک حلقه ي for مي تونيد ده تا از اونها را سر هم کنيد. مي شه کلمه ي ده کاراکتري.
اما اين روش به شما يک کلمه ي الزاما زيبا نمي دهد. اولا ترتيب حروف مصوت و صامت رعايت نمي شود مثلا ممکن است کلمه اس مثل aoiuhjgdc به شما داده شود که قابل تلفظ نيست. دوم اينکه word frequency در آن رعايت نمي شود. مثلا احتمال انتخاب شدن m و q هر دو 26/1 است. در حالي که در عمل حرف q بسيار کم کاربردتر از m است.
براي همين ممکن است با کلمات نازيبايي مثل qaxijuw مواجه شويد. همچنين ظرافت هاي زباني در آن گنجانده نشده مثلا در کلماتي مثل ball و full شما ll رو مي بينيد که از زيباي هاي زباني است. اين ترکيب ها در اين شبيه ساز گنجانده نشده.
به شما توصيه مي کنم که برنامه ي زير را دانلود و نصب کنيد:
http://www.gammadyne.com/rndword.htm#download
يک مولد تصادفي کلمه است. کلمات آن بسيار به زبان انگليسي شباهت دارد اما در حقيقت کلماتي بي معني هستند. نمونه هايي از اين کلمات را در اينجا قرار مي دهم:
Macereyl, Lobe, Ematene, Chray, Slatfis, Cetmansus, Puatomeryny, Britug

mehdi.mousavi
شنبه 12 شهریور 1390, 14:28 عصر
مثل اینکه یک اشتباه پیش اومده !!!! ببخشید من با ممبرشیپ استفاده نمیکنم , فقط به من بگید که چطوری من یک کلمه 10 کارکتری تصادفی ایجاد کنم !!! ممنون (راستی من با VB مینویسم)

خیر، اشتباهی پیش نیومده. :) هر پروژه ASP.NET ای، حاوی Reference به فایل System.Web.dll هستش که در این Assembly،
کلاسی تحت عنوان Membership وجود داره. این کلاس، حاوی متود Static ای هستش که وظیفه اش تولید Password هستش...
فارغ از اینکه شما در App ی خودتون کار authenticate کردن کاربران رو به Membership سپرده باشید یا خیر، می تونید متود Static مزبور
رو Call کنید و به رمز مورد نظر خودتون برسید.

@سامان هاشمی: بر اساس SDL، هرگز نباید از کلاس Random برای تولید Password استفاده کنید.

Saman Hashemi
شنبه 12 شهریور 1390, 14:35 عصر
بر اساس SDL، هرگز نباید از کلاس Random برای تولید Password استفاده کنید.
سلام ميشه در اين مورد بيشتر توضيح بديد...!

mahdioo12194
شنبه 12 شهریور 1390, 14:58 عصر
حالا اگه بخواهیم فقط یک عدد ده رقمی ایجاد کنیم چه کار باید بکنیم؟

aspismylove
شنبه 12 شهریور 1390, 15:10 عصر
راست میگه !! من الان چی کار کنم ؟

aspismylove
شنبه 12 شهریور 1390, 15:12 عصر
الان من این کد و از یک سایت خارجی گرفتم :

ببینید درسته همین و استفاده کنم ؟


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim rand As New Random
Dim letter As String
letter = ChrW(rand.Next(Asc("A"), Asc("Z") + 1))
TextBox1.Text = letter
End Sub

mahdioo12194
شنبه 12 شهریور 1390, 16:00 عصر
با کمی تغییر در کد دوستمان درست شد این کد منحصرا کد 10 رقمی فقط عدد می دهد



protected void Button6_Click(object sender, EventArgs e)
{
var chars = "0123456789";
var random = new Random();
var result = new string(
Enumerable.Repeat(chars, 10)
.Select(s => s[random.Next(s.Length)])
.ToArray());
Label7.Text = result;



}

alonemm
شنبه 12 شهریور 1390, 16:14 عصر
باسلام:
روش بالا روش دستی این کار هست اما اگه از روشی که آقای موسوی گفتند استفاده کنید هم در کد نویسی و هم در امنیت یک گام جلو تر هستید.

موفق باشید.

mahdioo12194
شنبه 12 شهریور 1390, 16:26 عصر
کد آقای موسوی ترکیبی از حروف و اعداد و کارکتر ها رو می داد اما کد بالا منحصرا عدد می دهد خواهشا اول کدها رو امتحان کنید بعد.......

khorsandreza
شنبه 12 شهریور 1390, 19:18 عصر
با سلام
با این دستور میتوانی رشته رندم با طول دلخواه ایجاد کنی

public static string GetRandomStr(int passwordLength)
{
string allowedChars = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ 0123456789";
char[] chars = new char[passwordLength];
Random rd = new Random();

for (int i = 0; i < passwordLength; i++)
{
chars[i] = allowedChars[rd.Next(0, allowedChars.Length)];
}

return new string(chars);

}
مثال مورد استفاده
string pstr =GetRandomStr(10)

mehdi.mousavi
شنبه 12 شهریور 1390, 23:44 عصر
سلام ميشه در اين مورد بيشتر توضيح بديد...!

سلام.
FIPS حداقل نیازهای امنیتی ماژول های Cryptography رو، در FIPS 140-2 (http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf) تعیین کرده و اونجا به آزمایشاتی اشاره می کنه که هر مولد اعداد تصادفی ایمن باید اونوها رو پاس کنه. از طرف دیگه، RFC 1750 (http://www.ietf.org/rfc/rfc1750.txt) به توصیه هایی امنیتی در مورد چگونگی تولید اعداد تصادفی اشاره کرده و به مشکلات استفاده از اعداد تولید شده توسط مولدهای قدیمی اشاره می کنه. تولید اعداد تصادفی خوب، باید غیر قابل حدس باشه و نشه چگونگی تولید اون ها رو پیش بینی کرد.

کلاس Random، از seed ای که بر اساس Clock سیستم هستش برای تولید اعداد تصادفی استفاده می کنه و در نتیجه بازه تولید این اعداد، شناخته شده و قابل پیش بینی هست (در اصطلاح Deterministic هستش) که به مهاجم در یافتن کلمات عبور تولید شده توسط مولد مربوطه، کمک میکنه. بنا بر ساز و کارهای چرخه توسعه نرم افزارهای ایمن در مایکروسافت، استفاده از کلاس Random برای تولید کلمات عبور، کلیدهای مورد استفاده در الگوریتم های رمزنگاری و هر جاییکه ایمنی اهمیت داشته باشه طرد شده و هرگز نباید از اون استفاده کرد. در .NET می تونید از کلاس RNGCryptoServiceProvider (http://msdn.microsoft.com/en-us/library/5f45t420.aspx) برای تولید اعداد تصادفی واقعی استفاده کنید.

برای اطلاعات بیشتر، به کتب و نوشته های Michael Howard، David Leblanc و Brian Sullivan مراجعه کنید.

موفق باشید.