View Full Version : سوال: روش مخفي كردن (ناخوانا كردن) كلمه عبور بانك اس كوال با دلفي
armm1388
چهارشنبه 25 خرداد 1390, 07:51 صبح
با سلام خدمت دوستان
پسورد كاربران را در بانك اس كو ال سرور ذخيره كرده ام ولي اگر كسي جدول آنرا باز كند پسوردها را مي فهمد . چگونه پسوردها را با دلفي مخفي و يا ناخوانا كنم؟ لطفا اگر ممكن است كد مربوطه را برايم ارسال فرماييد.
با تشكر فراوان
hossein_h62
چهارشنبه 25 خرداد 1390, 08:33 صبح
سلام
یه راهش اینه که پسوردها رو قبل از ذخیره در بانک Encrypt کنید و بعد از بازیابی از بانک Decrypt کنید.
Felony
چهارشنبه 25 خرداد 1390, 08:45 صبح
کسی کلمه عبور رو داخل بانک ثبت نمیکنه !
همونظور که در پست قبل گفته شد شما باید کلمه عبور رو Encrypt کنید و در داخل بانک ذخیره کنید تا اگر کسی بانک رو باز کرد ازش چیزی سر در نیاره ، نیازی هم به Decrypt کردن نیست ، وقتی کاربر رمز رو وارد کرد اون رو با همون الگوریتم مورد نظر Encrypt میکنید و اون کد به دست اومده رو با مقدار داخل بانک مقایسه میکنید .
a_mosavian
سه شنبه 31 خرداد 1390, 16:41 عصر
Encrypt کردن پسورد کاربران کار احمقانه ای است، چون در هر صورت قابل شکستن است. روش بهتر استفاده از Hash است. این روش به صورت یک طرفه پسورد ها را رمز می کند که به هیچ طریقی پسورد اصلی قابل بازیابی نیست. اما می توان با مقایسه Hash ذخیره شده با Hash رمز ورودی فهمید آیا این رمز معتبر است یا خیر. SQLServer از دو نوع سیستم MD5 و SHA1 پشتیبانی می کند که ترجیح بر MD5 است
نمونه کد اعتبار سنجی رمز عبور:
qTemp.SQL.Text:='SELECT * FROM UserList WHERE (ID = '
+ ID + ') AND (PassHash = HASHBYTES(''MD5'', N' + QuotedStr(Pass) + '))';
qTemp.Open;
if qTemp.RecordCount < 1 then begin
ShowError('کاربری یا گذرواژه معتبر نمی باشد.');
فیلد PassHash باید از نوع varbinary باشد. برای تغییر پسورد کاربران نیز:
DataModule2.Connection.ExecSQL('UPDATE UserList SET PassHash = HASHBYTES(''MD5'', N'
+ QuotedStr(NewPass.Text) + ') WHERE ID = ' + IntToStr(UID), []);
vcldeveloper
سه شنبه 31 خرداد 1390, 21:26 عصر
SQLServer از دو نوع سیستم MD5 و SHA1 پشتیبانی می کند که ترجیح بر MD5 است
MD5 ترجیحی بر SHA1 نداره؛ یک Hash Code با استفاده از MD5 را که از یک پسورد تولید شده را میشه با استفاده از تکنیک Rainbow attack دور زد. با توجه به ضعف های امنیتی شناخته شده MD5، نباید از این الگوریتم تولید Hash برای همچین کارهایی استفاده کرد، مگر اینکه از یک Salt با طول مناسب و مقادیر تصادفی در کنارش استفاده بشه.
a_mosavian
سه شنبه 07 تیر 1390, 23:26 عصر
MD5 ترجیحی بر SHA1 نداره؛ یک Hash Code با استفاده از MD5 را که از یک پسورد تولید شده را میشه با استفاده از تکنیک Rainbow attack دور زد. با توجه به ضعف های امنیتی شناخته شده MD5، نباید از این الگوریتم تولید Hash برای همچین کارهایی استفاده کرد، مگر اینکه از یک Salt با طول مناسب و مقادیر تصادفی در کنارش استفاده بشه.
من خودم Salt می کنم :پی ولی با توجه به اینکه رمز ها به صورت کاراکتر های National ذخیره میشه Rainbow جواب نمی ده. برای همین از افزودن Salt پرهیز کردم. Hash برای مقادیر National و غیر National فرق می کنه می تونید آزمایش کنید.
برای اونایی که نمی دونن Salt چیه کافیست که یک رشته دری وری 20-30 کاراکتری به ته پسورد کاربر بیفزایند :دی
متاسفانه خود SQL Server از روش های Hash دیگه پشتیبانی نمی کنه ولی اونایی که خوره هستند می تونند الگوریتم های Hash نگاری با متد های پیشرفته تر رو خودشون با کتابخانه DDCrypt پیاده سازی کنند. ولی خوبی این روش این هست که مستقل از دلفیه و اگر پسفردا به دات نت سوییچ کردند تبدیل کمتری نیاز دارند
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.