PDA

View Full Version : گفتگو: بررسی روش ها رمزنگاری برگشت ناپذیر و برگشت پذیر ، MD5 ، SHA1، SHA256، SHA384 و ...



mohammadi4net
چهارشنبه 28 مرداد 1388, 23:11 عصر
الف. روش برگشت ناپذیر
برای نگه داری رمز معمولا از الگوریتم های برگشت ناپذیر استفاده می شود مثلا می خواهیم رمز "mohamamdi4net" را رمز نگاری کنیم
*اصلاح می کنم در برگشت ناپذیر بجای لفظ رمز نگاری باید از درهم سازی استفاده کنیم.
با استفاده از توابعی که قبلا تعریف کرده ایم انجام می دهیم:


MD5("mohammadi4net",Encrypt.CharactersMode.UTF8Encoding)
' return " 58F3710DDE9FC7FD7FD97ADBBC47A3AA" , Length=32


SHA1("mohammadi4net",Encrypt.CharactersMode.UTF8Encoding)
' return "B75F51494D1DC37309BE32EAB552143B6B73DA0A" , Length=40

SHA256("mohammadi4net",Encrypt.CharactersMode.UTF8Encoding)
' return " 997DDBD00DDFC9466697627D87ACCA715A0013FECC7262EF9F BD294982A35D76" , Length=64

SHA384("mohammadi4net",Encrypt.CharactersMode.UTF8Encoding)
' return "2A3E7B0C5475CC58C727BDBD7F40ADB9701D973945539C5430 A70F823FE8F15B3590EE3BA9682682054EDE63BC5A93A5" , Length=96

SHA512("mohammadi4net",Encrypt.CharactersMode.UTF8Encoding)
' return "9B80CC8AE581C0DC9782EA2B0F4E3B8D6EB6232070019F64EB E2E8E494EC620CCE7487D30177D9C24E3C1313ED6063BD0402 FFC1931450BA99F01405743BEAF4" , Length=128
خوب حال می خواهیم رمز کاربر را برای ورود به برنامه بررسی کنیم، چون الگوریتم های بالا برگشت ناپذیر هستند، ابتدا رمزی را که کاربر وارد کرده است از طریق الگوریتمی که تبدیل کرده ایم در هم سازی می کنیم و بعد با رمز اصلی مقایسه می کنیم و صحت رمز عبور را بررسی می کنیم.

توضیح: روشهای بالا در vb.net و c# قابل پیاده سازی هستند اکه کسی خواست بگه کدشونوهم بگذارم و اگه روشی دیگه هم داخل دات نت هست لطفا معرفی کنید.

ب. روش های برگشت پذیر
روش های برگشت پذیر خیلی زیاد هستند که قدیمی ترین آن تغییر کد اسکی و ... ولی فکر کنم با اطلاعات ناقص من امروز از روشی به نام کلید یا چیزی شبیه این استفاده می کنند. به این صورت که متن را با یک کلید ( که خودش می تونه یک متن دیگه باشه) رمز نگاری می کنند.مثلا یه چیزی شبیه این :

Encrypt("mohammadi4net","kelid123")در این روش اگه ما بخواهیم متن رو از حالت کد گذاری خارج کنیم باید کلید را داشته باشیم وگرنه برای هر کلیدی که وارد کنیم به یک جواب می رسیم.
یک چیز هایی هم در مورد کلید خصوص و عمومی شنیده ام ولی هیچ وقت جدی بررسی نکردم. حالا از دوستانی که اطلاعات در مورد روش های برگشت پذیر دارند توضیح بدن، هدف اینه که چگونگی پیاده سازی روش های برگشت پذیر رو داخل vb.net یا C# یاد بگیریم.
فکر کنم داخل دات نت از این روش ها استفاده میشه:
AES RSA Base64 و ...

تو سایت هم که سرچ کردم ولی مطلب مفیدی پیدا نکردم

Nima NT
پنج شنبه 29 مرداد 1388, 00:08 صبح
در روشهای دو طرفه به همراه کلید مشکلی وجود داره و اون اینه که اگر کلید شما لو بره , من به عنوان نفر سوم میتونم اطلاعات مبادله شده بین شما و دوست فرضی رو رمزگشایی و حتی رمز کنم و خودم رو به جای شما معرفی کنم.
در روشهای غیر متقارن این ضعف حل شده , به این صورت که در هر بار رمزنگاری یک جفت کلید عمومی و خصوصی تولید میشه , شما با کلید خصوصی متن رو رمز میکنید و من توسط کلید عمومی اون رو از حالت رمزخارج میکنم , کلید عمومی فقط و فقط کارش رمزگشایی هست و برعکس کلید خصوصی وظیفه رمزکردن رو بر عهده داره , حالا اگر کلید عمومی لو بره , باز هم من قادر نخواهم بود که متن رمزشده تولید کنم و خودم رو با عنوان شما معرفی کنم.
تمامی این سیستم مبنای ریاضی داره و البته ساده هست , یکی از مشهورترین این الگوریتمها روش RSA هست که خیلی هم قدرتمند هست.
در مورد پیاده سازی در دات نت , امیدوارم اساتید کمک کنن , چون بنده برنامه نویس دات نت نیستم.

mohammadi4net
پنج شنبه 29 مرداد 1388, 21:41 عصر
تو سایت codeproject.com یک نمونه برنامه پیدا کردم که تمام الگوریتم های قابل استفاده در دات نت داخل او هست البته با VB.net نوشته شده البته برای یک برنامه نویس دات نت نباید فرقی داشته باشه، امیدوارم یکی پیدا بشه که بتونه اونها رو توضیح بده که بتونیم اونارو کامل درک کنیم نه فقط کپی پست کنیم!
الگوریتم های رمزنگاری در دات نت:
Rijndael
Triple-DES
RSA
RC2
DES
DSA
RNG
Base-64

لینک http://www.codeproject.com/KB/security/Crypto.aspx

honey84
شنبه 09 آبان 1388, 19:51 عصر
سلام ..من سورس مد الگوریتم DSA رو میخوام ...نتونستم پیدا کنم ..اگه میشه کمکم کنید ...ممنون

Sajjad.Aghapour
شنبه 09 آبان 1388, 20:08 عصر
َُِDSA مخفف Digital Signature Algorithm....
می تونید الگوریتم کلیش رو تو اینترنت جستجو کنید....

http://en.wikipedia.org/wiki/Digital_Signature_Algorithm