نمایش نتایج 1 تا 34 از 34

نام تاپیک: Decode نمودن رشته ای که با MD5 کد شده است

  1. #1

    Decode نمودن رشته ای که با MD5 کد شده است

    با سلام به همه دوستان
    من با استفاده از الگوریتم MD5 رشته مورد نظرم را Code کرده ام
    سئوال من اینست که چگونه آن را Decode نمایم.

    با تشکر

  2. #2
    بسته به این که با چه کلیدی آنرا کد کرده اید می توانید کد گشایی کنید

  3. #3
    من با استفاده از الگوریتم MD5 رشته مورد نظرم را Code کرده ام
    Code با Hash متفاوت است . الگوریتم MD5 یک روش برای تولید Hash است نه Code . الگوریتمهای تولید Hash مثل MD5 یا SHA-1 و ... قابل بازگشت نیستند . یعنی رشته ای که از اعمال این الگوریتم ایجاد شده ، قابل تبدیل به موجودیت اولیه نیست . تنها راه "احتمالی" ، سعی/خطا و آزمودن کلیهء حالات ممکن و تولید Hash از هر حالت و مقایسهء Hash ها ست . حتی اگر با یک احتمال بی نهایت ضعیف ، خروجی این قیاس True باشه ، نمیشه اطمینان داشت که لزوما" آنچه از آن Hash گرفته شده ، همین است که از سعی/خطا به دست آورده ایم .

    موفق باشی
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  4. #4
    :strange:
    خوب عمو اینپرایز اگه اینطور باشه که اصلا به چه دردی می خوره ما hash کنیم؟ مگه xxx داریم چیزی بسازیم که با اولش بر نمیگرده؟

  5. #5
    اول اینو بخون ، بعد اگر نظرت عوض شد ، روی نحوهء عملکردت تو این فروم تجدید نظر کن . فکر میکنم این کاریه که این روزا خیلیها باید انجامش بدن .

    عصر خوش
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  6. #6
    پس برنامه johncracker چطوری پسوردهای لینوکس و پیدا میکنه ؟ مگه اونا هم بصورت md5 ذخیره نمیشن ؟

  7. #7
    چطوری پسوردهای لینوکس و پیدا میکنه ؟ مگه اونا هم بصورت md5 ذخیره نمیشن ؟
    نحوهء ذخیره سازی به انتخاب کاربر و توزیع لینوکس بستگی داره . چند برنامه ای که پسوردها رو برمیگردونن ، یا زمانی عمل میکنند که Hashing اتفاق نیفتاده ، یا از Brute-Force استفاده میکنن ، که توضیحش اون بالا هست .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  8. #8
    کاربر جدید
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    Mashhad/Texas
    پست
    25
    با سلام

    عذر میخوام که topic جدید باز نکردم! :wink:
    میخواستم بپرسم که md5 چند کاراکتر بر میگرداند؟ یعنی حداقل و حداکثر دارد؟ یا نه همیشه تعدادخاصی کاراکتر برمیگرداند!!؟

    ممنونم./. :oops:

  9. #9
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313
    اگر به لینکی که داده شده بود می رفتی می دیدی که نوشته"
    "MD5 روش برای تولید یک چکیده از یک پیام است ( Message Digest ) . چه یک کلمه ، یک عدد ، یک جمله ، یک کتاب چند صد صفحه ای ، یک فایل و ... به او بدهید ، یک چکیده با طول ثابت 128بیتی تولید میکند ."
    هر ورودی که داده بشه خروجی 128 بیت خواهد بود!

  10. #10
    کاربر جدید
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    Mashhad/Texas
    پست
    25
    پس با این وجود، یک فیلد 16 کاراکتری براش کافیه؟!! :wink:

  11. #11
    کاربر دائمی آواتار hmm
    تاریخ عضویت
    مهر 1382
    محل زندگی
    ایران - یزد
    پست
    1,229
    هر ورودی که داده بشه خروجی 128 بیت خواهد بود!
    اصلاح میکنم 128 بایتی!!!!

  12. #12
    خیلی برام عجیبه وقتی میبینم تا بحال حداقل سه بار در این مورد نوشته ام ؛ باز هم ...

    همان "128 بیت" درست است .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  13. #13
    کاربر دائمی آواتار hmm
    تاریخ عضویت
    مهر 1382
    محل زندگی
    ایران - یزد
    پست
    1,229
    اصلاح میکنم 128 بایتی!!!!
    باز هم اصلاح میکنم 128 بیتی !!!! :confy2: :sorry:

  14. #14
    کاربر جدید
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    Mashhad/Texas
    پست
    25
    ار همتون متشکرم :oops:

  15. #15
    سلام
    بله اگر کلید را داشته باشید قابل برگشت است به روش غیر brute force. ضمنا MD5 که من یکبار کار کردم فکر کنم ۱۶ بایت خروجی دارد یعنی ۱۲۸ بیت. اگر داده شما هم کمتر یا مساوی همین تعداد بیت باشد و روی آن MD5 را اعمال کنید، با داشتن کلید آن میتوان به داده اولیه رسید. به عنوان مثال در پروتکل RADIUS مخصوص Access Server ها که من روی نوشتن سرورش کار میکردم پسورد به همین شکل کد و دیکد میشد. هر چند اصولا کاربرد الگوریتمهای Hashing این نیست و برای حفظ Integrity داده ها و امضای دیجیتالی و Checksum به کار میروند.
    ممنون علی

  16. #16
    البته اگر منظور شما Md5 است تا جایی که من اطلاع دارم کلیدی تولید نمی شود که با داشتن آن بتوان رشته هش شده را دیکد کرد.اصولا دیکد کردن عبارات هش شده بی معنیست.(کد نمشه که بخواد دیکد بشه)

    در ضمن میزان حجم داده ربطی به توانایی در مورد استفاده از الگریتم های هشینگ ندارد.شما هر چیزی رو که به Md5 بدهید یک خروجی 128 بیتی همیشه ثابت و تقریبا منحصر به فرد (احتمال شباهت بین خروجی دو عبارت متفاوت خیلی کمه) به شما بر میگردونه
    Artists use lies to tell the truth while politicians use them to cover the truth up

  17. #17
    نقل قول نوشته شده توسط Afshin_Zavar
    :strange:
    خوب عمو اینپرایز اگه اینطور باشه که اصلا به چه دردی می خوره ما hash کنیم؟ مگه xxx داریم چیزی بسازیم که با اولش بر نمیگرده؟

    اگر تو میتونی چیزی رو که کد کردی دیکد کنی بنابراین بقیه هم میتونن

    برای نگه داری پسورد ها ، تهیه امضا برای تشخیص اعتبار داده موجود و... هش کردن بسیار راه گشاست.شخصا توصیه می کنم بنا بر برنامه و نحوه عملکردش از دو لایه (یا بیشتر) هشینگ استفاده کنید.مثلا ((('md5(sha1(md5('hello world

    این کار دو فایده داره
    گمراه کردن مهاجم و تلف کردن وقتش.
    Artists use lies to tell the truth while politicians use them to cover the truth up

  18. #18
    دو لایه هش!!! چرا آخه؟
    این کار دو فایده داره
    گمراه کردن مهاجم و تلف کردن وقتش.
    منظور از گمراه کردن رو نمیدونم اما تلف کردن وقت همون یه مرحله رو هنوز کسی نشکسته که بخوایم دوتاش کنیم!

  19. #19
    نقل قول نوشته شده توسط someCoder
    دو لایه هش!!! چرا آخه؟

    منظور از گمراه کردن رو نمیدونم اما تلف کردن وقت همون یه مرحله رو هنوز کسی نشکسته که بخوایم دوتاش کنیم!
    چرا من تا به حال چندین بار یک رشته MD5 را که حاوی پسورد بود را با بروت فورس بدست آوردم

    منظور از گمراه کردن
    من گاهی اگر واقعا لازم باشه رشته ای رو که توسط برنامه ذخیره میکنم که الاظاهر می تونه یک رشته sha1 یا md5 باشه اما فی اولواقع نیست
    Artists use lies to tell the truth while politicians use them to cover the truth up

  20. #20
    چرا من تا به حال چندین بار یک رشته Md5 را که حاوی پسورد بود را با بروت فورس بدست آوردم
    اینکه با بروت فورس شکستیش دلیلش امنیت کم پسورد انتخاب شده بوده، نه شکستن Md5 یا Sha1! چون اگر طرف 6 بار هم هش میکرد، تو هم توی بروت فورس از 6 بار هش استفاده میکردی.

    اما اگر منظورت اینه که یه کاری بکنی که منطق برنامت رو کسی ندونه میشه قبول کرد. اما خوب شکستن رمز وقتی مطرح میشه که طرف الگوریتم رو میدونه.

  21. #21
    نقل قول نوشته شده توسط houtanal
    البته اگر منظور شما Md5 است تا جایی که من اطلاع دارم کلیدی تولید نمی شود که با داشتن آن بتوان رشته هش شده را دیکد کرد.اصولا دیکد کردن عبارات هش شده بی معنیست.(کد نمشه که بخواد دیکد بشه)

    در ضمن میزان حجم داده ربطی به توانایی در مورد استفاده از الگریتم های هشینگ ندارد.شما هر چیزی رو که به Md5 بدهید یک خروجی 128 بیتی همیشه ثابت و تقریبا منحصر به فرد (احتمال شباهت بین خروجی دو عبارت متفاوت خیلی کمه) به شما بر میگردونه
    سلام

    بله من چون خیلی وقت پیش روی این موضوع کار میکردم RADIUS Server که در اوونجا پسورد رو با MD5 یک کلمه رمز و شماره درخواست XOR میکرد بعد روی شبکه میفرستاد، اشتباه کردم. MD5 یک Hashing یک طرفه است.

    در مورد میزان حجم داده و... من هم چیزی غیر از این نگفتم و دقیقا به همین مطلب اشاره کردم که اندازه داده ها هر قدر باشه MD5 آن ۱۲۸ بیت خواهد بود. مانند CRC32 که ۳۲ بیت خروجی دارد.
    ممنون علی

  22. #22
    نقل قول نوشته شده توسط someCoder
    اینکه با بروت فورس شکستیش دلیلش امنیت کم پسورد انتخاب شده بوده، نه شکستن Md5 یا Sha1! چون اگر طرف 6 بار هم هش میکرد، تو هم توی بروت فورس از 6 بار هش استفاده میکردی.
    به هر حال تو هیچ وقت نمیتونی امنیت چیزی رو صد در صد تضمین کنی.تنها کاری که میشه کرد پایین آوردن درصد ریسک است.تلف کردن وقت مهاجم یکی از این راه هاست.توجه کن که مهاجم برای این که بتونه در بنامش از همون الگوریتم لایه بندی تو استفاده کنه محبوره حداقل یک بار یکی از رشته های هش شده ات رو بدست بیاره.

    هر کسی با داشتن یک rainbow table خوب + یک سیستم سریع می تونه قوی ترین پسورد ها رو هم (احتمالا) بدست بیاره.
    Artists use lies to tell the truth while politicians use them to cover the truth up

  23. #23
    هر کسی با داشتن یک rainbow table خوب + یک سیستم سریع می تونه قوی ترین پسورد ها رو هم (احتمالا) بدست بیاره
    من اینطور فکر نمیکنم! حاضرم ثابت کنم! میخوای من یه رشته رو Hash کنم و یا مثلا با AED یا حتی 3DES روم کنم، اونوقت اگر کسی تونست کرکش کنه! هم ریاضی و هم تجربه نشون داده که نمیشه. مگر اینکه پسورد اونقدر ضعیف باشه که بشه حدسش زد.

  24. #24
    اگر یک عبارت 2 بار MD5 بشه با قوی ترین سیستم ها هم مراحل کرک به هفته ها می کشه و به CPU آسیب می رسه . من روی قوی ترین و پرسرعت ترین سرور های لینوکس این قضیه رو تست کردم . می دونید Brute Force کردن یک عبارت 32 کارکتری یعنی چی ؟؟؟؟ یعنی فاجعه . امکان لو رفتنش خیلی کمه . و اما اگه 3 یا 4 بار هاش بشه امنیت کامل پسورد از نظر کرکینگ برقراره . در ضمن هیچ کلیدی در MD5 وجود نداره منظورم کلید Public و Priv8 هست . MD5 توسط یک پروفسور ریاضی طراحی شده و مشکلی برش وارد نیست .

  25. #25
    اگر یک عبارت 2 بار MD5 بشه با قوی ترین سیستم ها هم مراحل کرک به هفته ها می کشه و به CPU آسیب می رسه .
    اولا که اگر یک بار کد بشه کرک کردنش به قرنها میکشه! دیگه دو بارشو من درک نمیکنم چه صیغه ایه!
    ضمنا من تو کف این ماجرای سوختن CPU هستم!!!!!!!!!!!(و هزار تا علامنت تعجب دیگه!)
    آخه چه ربطی داره ... به شقیقه!

  26. #26
    قرنها؟؟!!!
    احتمالا برات پیش نیومده که نیاز به این کار داشته باشی
    Artists use lies to tell the truth while politicians use them to cover the truth up

  27. #27
    اگر شک داری امتحانش مجانیه!
    میخوای برات یه رشته Hash کنم و تونستی قبل از 100 سال دیگه برام کرکش کن!

  28. #28
    کاربر دائمی
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    فعلا ایران - فعلا تهران
    پست
    2,628
    در الگوریتم هش کردن یک آرایه مقدار دهی میشود (به کد زیر ) ؛ حال اگر این مقادیر رو من تغییر بدم مشکلی در نتیجه حاصله بوجود میاد یا نه

    Public Sub loadArrayValues()
    m_lOnBits(0) = CLng(1)
    m_lOnBits(1) = CLng(3)
    m_lOnBits(2) = CLng(7)
    m_lOnBits(3) = CLng(15)
    m_lOnBits(4) = CLng(31)
    m_lOnBits(5) = CLng(63)
    m_lOnBits(6) = CLng(127)
    m_lOnBits(7) = CLng(255)
    m_lOnBits(8) = CLng(511)
    m_lOnBits(9) = CLng(1023)
    m_lOnBits(10) = CLng(2047)
    m_lOnBits(11) = CLng(4095)
    m_lOnBits(12) = CLng(8191)
    m_lOnBits(13) = CLng(16383)
    m_lOnBits(14) = CLng(32767)
    m_lOnBits(15) = CLng(65535)
    m_lOnBits(16) = CLng(131071)
    m_lOnBits(17) = CLng(262143)
    m_lOnBits(18) = CLng(524287)
    m_lOnBits(19) = CLng(1048575)
    m_lOnBits(20) = CLng(2097151)
    m_lOnBits(21) = CLng(4194303)
    m_lOnBits(22) = CLng(8388607)
    m_lOnBits(23) = CLng(16777215)
    m_lOnBits(24) = CLng(33554431)
    m_lOnBits(25) = CLng(67108863)
    m_lOnBits(26) = CLng(134217727)
    m_lOnBits(27) = CLng(268435455)
    m_lOnBits(28) = CLng(536870911)
    m_lOnBits(29) = CLng(1073741823)
    m_lOnBits(30) = CLng(2147483647)

    m_l2Power(0) = CLng(1)
    m_l2Power(1) = CLng(2)
    m_l2Power(2) = CLng(4)
    m_l2Power(3) = CLng(8)
    m_l2Power(4) = CLng(16)
    m_l2Power(5) = CLng(32)
    m_l2Power(6) = CLng(64)
    m_l2Power(7) = CLng(128)
    m_l2Power(8) = CLng(256)
    m_l2Power(9) = CLng(512)
    m_l2Power(10) = CLng(1024)
    m_l2Power(11) = CLng(2048)
    m_l2Power(12) = CLng(4096)
    m_l2Power(13) = CLng(8192)
    m_l2Power(14) = CLng(16384)
    m_l2Power(15) = CLng(32768)
    m_l2Power(16) = CLng(65536)
    m_l2Power(17) = CLng(131072)
    m_l2Power(18) = CLng(262144)
    m_l2Power(19) = CLng(524288)
    m_l2Power(20) = CLng(1048576)
    m_l2Power(21) = CLng(2097152)
    m_l2Power(22) = CLng(4194304)
    m_l2Power(23) = CLng(8388608)
    m_l2Power(24) = CLng(16777216)
    m_l2Power(25) = CLng(33554432)
    m_l2Power(26) = CLng(67108864)
    m_l2Power(27) = CLng(134217728)
    m_l2Power(28) = CLng(268435456)
    m_l2Power(29) = CLng(536870912)
    m_l2Power(30) = CLng(1073741824)

    K(0) = &H428A2F98
    K(1) = &H71374491
    K(2) = &HB5C0FBCF
    K(3) = &HE9B5DBA5
    K(4) = &H3956C25B
    K(5) = &H59F111F1
    K(6) = &H923F82A4
    K(7) = &HAB1C5ED5
    K(8) = &HD807AA98
    K(9) = &H12835B01
    K(10) = &H243185BE
    K(11) = &H550C7DC3
    K(12) = &H72BE5D74
    K(13) = &H80DEB1FE
    K(14) = &H9BDC06A7
    K(15) = &HC19BF174
    K(16) = &HE49B69C1
    K(17) = &HEFBE4786
    K(18) = &HFC19DC6
    K(19) = &H240CA1CC
    K(20) = &H2DE92C6F
    K(21) = &H4A7484AA
    K(22) = &H5CB0A9DC
    K(23) = &H76F988DA
    K(24) = &H983E5152
    K(25) = &HA831C66D
    K(26) = &HB00327C8
    K(27) = &HBF597FC7
    K(28) = &HC6E00BF3
    K(29) = &HD5A79147
    K(30) = &H6CA6351
    K(31) = &H14292967
    K(32) = &H27B70A85
    K(33) = &H2E1B2138
    K(34) = &H4D2C6DFC
    K(35) = &H53380D13
    K(36) = &H650A7354
    K(37) = &H766A0ABB
    K(38) = &H81C2C92E
    K(39) = &H92722C85
    K(40) = &HA2BFE8A1
    K(41) = &HA81A664B
    K(42) = &HC24B8B70
    K(43) = &HC76C51A3
    K(44) = &HD192E819
    K(45) = &HD6990624
    K(46) = &HF40E3585
    K(47) = &H106AA070
    K(48) = &H19A4C116
    K(49) = &H1E376C08
    K(50) = &H2748774C
    K(51) = &H34B0BCB5
    K(52) = &H391C0CB3
    K(53) = &H4ED8AA4A
    K(54) = &H5B9CCA4F
    K(55) = &H682E6FF3
    K(56) = &H748F82EE
    K(57) = &H78A5636F
    K(58) = &H84C87814
    K(59) = &H8CC70208
    K(60) = &H90BEFFFA
    K(61) = &HA4506CEB
    K(62) = &HBEF9A3F7
    K(63) = &HC67178F2

    End Sub

  29. #29
    تا جایی که من میدونم مشکلی ایجاد نمیشه! فقط دیگه یه هش استاندارد نداریم! یعنی یه نتیجه دیگه به دست میاد که طبق تعریف هش بازم هش هست اما استاندارد نیست.
    شاید بشه گفت یه هش شخصی! مثلا یه راهکار بجای اون روش دو بار هش کردن که اونم هدفش غیر استاندارد کردن خروجی بود.


    البته فکر کنم اینطور باشه! مطمئن نیستم

  30. #30
    کاربر دائمی
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    فعلا ایران - فعلا تهران
    پست
    2,628
    مهم نیست که استاندارد نباشه ؛ مشکل نداشته باشه و بتونم ازش استفاده کنم کافیه

  31. #31
    تا جایی که من میدونم نباید مشکلی پیش بیاد. البته بهتره اساتید هم در این مورد نظر بدن

  32. #32
    کاربر دائمی آواتار ICEMAN
    تاریخ عضویت
    تیر 1383
    محل زندگی
    Hyper-V
    پست
    476
    تا جایی که من میدونم Md5 یه الگریتم یه طرفه است و بر نمی گرده

  33. #33
    کاربر دائمی
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    فعلا ایران - فعلا تهران
    پست
    2,628
    نقل قول نوشته شده توسط ICEMAN
    تا جایی که من میدونم Md5 یه الگریتم یه طرفه است و بر نمی گرده
    اینکه واضحه ؛ تمام بحثم از اول روی این محور میچرخه .
    مطالب رو از اول یکبار دیگه بخون به لینک استاد اینپرایز هم توجه کن

  34. #34
    آقای زواری، حالا که این پست دوباره بالا اومد یادم اومد یه چیز دیگه هم در جوابتون اضافه کنم. اینکه گفتم فکر میکنم مشکلی نباید پیش بیاد به این دلیل بود که طبق منطق الگوریتم اینها فقط یه سری مقادیر برای استاندارد شدن هستند و استحکام این الگوریتم با این مقادیر اثبات شده است. اما اینکه گفتم شک دارم به این دلیل بود که ممکنه یه وقتی با انتخاب مقادیر اولیه نامناسب (شاید!!!) روشی برای کرک کردن پیدا بشه. البته این نظر شخصی منه و هیچ پایه علمی هم نداره. فقط یه حدسه.

تاپیک های مشابه

  1. Decode کردن فایل Exe برای VB.Net
    نوشته شده توسط mehdi3683 در بخش VB.NET
    پاسخ: 12
    آخرین پست: جمعه 09 مرداد 1394, 23:11 عصر
  2. decode کردن یک متن
    نوشته شده توسط nazaninam در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: شنبه 01 مهر 1385, 09:12 صبح
  3. code و decode کردن tableها در SQL
    نوشته شده توسط fereshteh_b در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: یک شنبه 14 فروردین 1384, 23:12 عصر
  4. شبیه دستور DECODE در اوراکل
    نوشته شده توسط delphiman00 در بخش برنامه نویسی در Delphi
    پاسخ: 5
    آخرین پست: پنج شنبه 14 خرداد 1383, 11:28 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •