سلام دوستان
می خواستم بپرسم کسی میدونه مکانیزم هش کردن md5 به چه شکلیه؟
قبلا با امیرجان مشورت کردم در مورد اینکه چه جوری میشه استرینگی که بوسیله md5 هش شده به صورت اولش برگردوند اما گفت که امکان نداره ولی من می خوام یه برنامه طراحی کنم که بشه استرینگی که با md5 هش شده به صورت ورودیه اولیه برگرده
حالا از دوستانی که در این مورد هر گونه اطلاعاتی دارن می خوام که تو این تاپیک مطرح کنن
با تشکر
يه الگوريتم كه اصطلاحان غير قابل بازگشته اصلا هش به همين معنيه يعني بر گشت پذير نيست در ضمن يكتا هم نيست يعني ممكنه براي دو عدد يه جواب بده كه همين باعث برگشت ناپذيريش هم مي شه فكر كنم تو كتاب مهندس ملكيان هم توضيح داده بود كه چه جوريه
البته من زياد نخوندمش ولي با پيشرفت امكانات احتمالابايد بشه برشگردوند يا حداقل يه چيزي پيدا كرد كه هش شدش با اون برابر باشه
یه توضیح برا من میدین که این هش چیه!؟
spiderman نوشته است:یه توضیح برا من میدین که این هش چیه!؟
ببين يه چيزي تو مايه هاي رمزي كردن اطلاعات خاص مثلا يه پسورد داري كه به صورت استرينگه و مي خواي موقع نمايش اون به صورت يه استرينگ نامنظم ديده بشه پس تنها راهت اينه كه اون كلمه رو به شكلي در بياري كه اگه كسي اونو ديد متوجه نشه اون كلمه چي بوده مثلا مي خواي كلمه SpiderMan رو طوری تغییر بدی که به صورت رمز دربیاد مثلا اینجوری بشه"jhgjg4guyhvy6hjvbnvgfcvchgvhg" اونوقت اگه کسی اینو بخونه نمی دونه که کلمه اولیه ای که بهش دادی SpiderMan بوده فقط در صورتی میشه اونو برگردوند که دوباره از همون برنامه ای نوشتیش استفاده کنی و اونو برگردنی در کل هش شدن یه استرینگ تبدیل اون به یه سری از حروف نامنظم ولی ثابت هستش که واسه امنیت استرینگ ها به کار میره
خلاصه نمیدونم خوب توضیح دادم یا نه اما اگه متوجه نشدی بهم بگو تا بیشتر برات توضیح بدم
متوجه شدم. این برنامه رو نوشتم. اینجا هم گزاشتم.
حالا اون md5 برنامه؟ اگه برنامه آپلود کن شاید بشه کاریش کرد
كسي نمي خواد توضيحي در اين مورد بده؟
veyskarami نوشته است:كسي نمي خواد توضيحي در اين مورد بده؟
در كدوم مورد ؟
نمي خوام فكر كني مي خوام نا اميدت كنم ، اما باور كن نميشه !
حرف آخر : بي خيالش شو !
حرف اول (!) : اين تابع كه تو سورس آقا محمد هستش ،مرحله آخر كار الگوريتم MD5 هستش ، امرن اگه بتوني اينو برعكسش كني ! تازه اين آخرين مرحلشه !
کد:
Private Function LongToString(Num As Long) As String
Dim a As Byte
Dim b As Byte
Dim c As Byte
Dim d As Byte
a = Num And &HFF&
If a < 16 Then
LongToString = "0" & Hex(a)
Else
LongToString = Hex(a)
End If
b = (Num And &HFF00&) \ 256
If b < 16 Then
LongToString = LongToString & "0" & Hex(b)
Else
LongToString = LongToString & Hex(b)
End If
c = (Num And &HFF0000) \ 65536
If c < 16 Then
LongToString = LongToString & "0" & Hex(c)
Else
LongToString = LongToString & Hex(c)
End If
If Num < 0 Then
d = ((Num And &H7F000000) \ 16777216) Or &H80&
Else
d = (Num And &HFF000000) \ 16777216
End If
If d < 16 Then
LongToString = LongToString & "0" & Hex(d)
Else
LongToString = LongToString & Hex(d)
End If
End Function
مثل اون مثالي كه برات گفتم !
فرض كن به شما 2880 رو بدن ،بگن دقيقا بگو مولفه هاي اوليه چي بودن ! يعني يه چيز محال ! تازه اين يه عدد كوچيكه ، واي به حال ...
:wink:
من كه نفهميدم :cry:
چه طوري هاست. اگر يكي بياد و يك كلمه جمله يا متن رو با MD5 رمز کنه و بعد نتونه از اون رمز داده اولیه رو استخراج کنه اصلا به چه دردی می خوره ؟!؟!
مثل این می مونه که بیایم و در گنجرو قفل کنیم تا کسی چیزی از توش برنداره بعد بریم کلیدش رو بندازیم دور ؟!؟!؟!
Darg نوشته است:من كه نفهميدم :cry:
چه طوري هاست. اگر يكي بياد و يك كلمه جمله يا متن رو با MD5 رمز کنه و بعد نتونه از اون رمز داده اولیه رو استخراج کنه اصلا به چه دردی می خوره ؟!؟!
مثل این می مونه که بیایم و در گنجرو قفل کنیم تا کسی چیزی از توش برنداره بعد بریم کلیدش رو بندازیم دور ؟!؟!؟!
نشد ديگه ! وقتي نتوني اونو به مقدار اولش بازگردوني يعني امنيت بسيار بالا اين يك ! ثانيا ما كليد رو دور نمي ندازيم . اين مدل هش كليد هم داره . چون تنها راهه بازگشت همون كليد هست كه همه در اختيار ندارن يعني مثل در يه خونه كه كليدش دست شماست و بقيه مردم نمي دونن اون كليد كجاست پيش كيه و يا اصلا چه كليديه !!
شما گفتي به چه درد ميخوره ! اينم يه مثال : ببين همين PHP Nuke رو در نظر بگير . وقتي شما به عنوان يه عضو جديد ثبت نام مي كني يه پسورد واسه خودت انتخاب مي كني . اين پسورد با همين الگوريتم به هش تبديل ميشه و توي ديتابيس دخيره ميشه .
حالا شما ميخواي به سايت وارد بشي ! خوب كافيه كه پسوردي كه شما به عنوان رمز عبور خودتون وارد مي كنيد تا به بخش اعضا دسترسي پيدا كنيد تبديل به هش بشه و فقط با هش موجود توي ديتابيس مقايسه بشه . در واقع هيچ نيازي به ديكد كردن نيست و فقط يه مقايسه لازمه تا صحت پسورد شما چك بشه . حالا گيرم هيچ كليدي هم نداشته باشيم !!
اين يعني اگه هكر به اطلاعات ديتابيس هم دسترسي پيدا كنه يه عده پسورد كد شده ميبينه كه هر كدومش 10 سال وقت ميبره تا شناسايي بشه پس حالش گرفته ميشه . نكته بعدي اينكه ادمين محترم هم نميتونه پسورد شما رو بخونه
و در واقع همه چيز توي يه لفافه امنيتي پوشش داده ميشه . :wink:
Darg نوشته است:من كه نفهميدم :cry:
چه طوري هاست. اگر يكي بياد و يك كلمه جمله يا متن رو با MD5 رمز کنه و بعد نتونه از اون رمز داده اولیه رو استخراج کنه اصلا به چه دردی می خوره ؟!؟!
مثل این می مونه که بیایم و در گنجرو قفل کنیم تا کسی چیزی از توش برنداره بعد بریم کلیدش رو بندازیم دور ؟!؟!؟!
نشد ديگه ! وقتي نتوني اونو به مقدار اولش بازگردوني يعني امنيت بسيار بالا اين يك ! ثانيا ما كليد رو دور نمي ندازيم . اين مدل هش كليد هم داره . چون تنها راهه بازگشت همون كليد هست كه همه در اختيار ندارن يعني مثل در يه خونه كه كليدش دست شماست و بقيه مردم نمي دونن اون كليد كجاست پيش كيه و يا اصلا چه كليديه !!
شما گفتي به چه درد ميخوره ! اينم يه مثال : ببين همين PHP Nuke رو در نظر بگير . وقتي شما به عنوان يه عضو جديد ثبت نام مي كني يه پسورد واسه خودت انتخاب مي كني . اين پسورد با همين الگوريتم به هش تبديل ميشه و توي ديتابيس دخيره ميشه .
حالا شما ميخواي به سايت وارد بشي ! خوب كافيه كه پسوردي كه شما به عنوان رمز عبور خودتون وارد مي كنيد تا به بخش اعضا دسترسي پيدا كنيد تبديل به هش بشه و فقط با هش موجود توي ديتابيس مقايسه بشه . در واقع هيچ نيازي به ديكد كردن نيست و فقط يه مقايسه لازمه تا صحت پسورد شما چك بشه . حالا گيرم هيچ كليدي هم نداشته باشيم !!
اين يعني اگه هكر به اطلاعات ديتابيس هم دسترسي پيدا كنه يه عده پسورد كد شده ميبينه كه هر كدومش 10 سال وقت ميبره تا شناسايي بشه پس حالش گرفته ميشه . نكته بعدي اينكه ادمين محترم هم نميتونه پسورد شما رو بخونه
و در واقع همه چيز توي يه لفافه امنيتي پوشش داده ميشه . :wink: