الگوریتم هش کردن چگونه کار می کند؟

زمان مطالعه: 4 دقیقه
انتشار :
۱۳۹۷-۰۵-۱۴

الگوریتم هش کردن چگونه کار می کند؟

 الگوریتم های هش کردن یک سلاح مهم در هر جعبه ابزار رمزنگاری هستند

آنها در همه جا در اینترنت هستند، اغلب برای محافظت از کلمات عبور استفاده می شوند، بلکه بخش مهمی از اغلب ارزهای رمزنگاری مانند Bitcoin و Litecoin را تشکیل می دهند.

ویژگی های اصلی الگوریتم هش کردن این است که آنها یک عملکرد یکنواخت هستند – یا به عبارت دیگر شما می توانید خروجی را از ورودی دریافت کنید، اما شما نمی توانید ورودی را از خروجی دریافت کنید – درست مانند رمزنگاری منحنی بیضوی که در آن شما نمی توانید کلید خصوصی را از کلید عمومی دریافت کنید. اموال دیگر این است که همان ورودی یک خروجی مشابه ایجاد می کند.

بیشتر الگوریتم های هش کردن، از جمله SHA و RIPEMD، از خانواده MD4 فرود آمده اند. الگوریتم هش کردن MD4 توسط Ronald Rivest به طور خاص برای اجرای نرم افزار بسیار آسان طراحی شده است. الگوریتم MD4 و الگوریتم های بعدی SHA از متغیرهای ۳۲ بیتی با توابع بولی بیتی مانند اشیاء منطقی AND، OR و XOR برای انجام کار از طریق ورودی به هش خروجی استفاده می کنند.

بنابراین چگونه الگوریتم هش کردن کار می کند – در این مورد نگاهی به SHA1:

۱ – ایجاد پنج متغیر

H0 – 01100111010001010010001100000001
H1 – 11101111110011011010101110001001
H2 – 10011000101110101101110011111110
H3 – 00010000001100100101010001110110
H4 – ۱۱۰۰۰۰۱۱۱۱۰۱۰۰۱۰۱۱۱۰۰۰۰۱۱۱۱۱۰۰۰۰

۲- سپس کلمه را به هش انتخاب کنید. در این مورد ما کلمه “CRYPTO” را انتخاب خواهیم کرد

۳- کلمه را به ASCII تبدیل کنید – “کد استاندارد آمریکا برای تبادل اطلاعات”. هر نامه دارای یک شماره اختصاص داده شده به آن است.

CRYPTO – ۶۷-۸۲-۸۹-۸۰-۸۴-۷۹

۴- تبدیل کد ASCII به باینری –

CRYPTO – ۰۱۰۰۰۰۱۱-۰۱۰۱۰۰۱۰-۰۱۰۱۱۰۰۱-۰۱۰۱۰۰۰۰-۰۱۰۱۰۱۰۰-۰۱۰۰۱۱۱۱

۵- پیوستن به شخصیت ها و اضافه کردن ۱ به پایان.

CRYPTO – ۰۱۰۰۰۰۱۱۰۱۰۱۰۰۱۰۰۱۰۱۱۰۰۱۰۱۰۱۰۰۰۰۰۱۰۱۰۱۰۰۰۱۰۰۱۱۱۱۱

۶- اضافه کردن صفر به پیام برابر با ۴۴۸ mod 512 – (محاسبات مدولار دقیقا مانند یک ساعت به جز با ۵۱۲ ساعت). بنابراین یک پیام ۴۸ بیتی با یک افزونه باید ۳۹۹ صفر را به انتها اضافه کند، و اگر پیام ۶۴ عدد (یا ۵۱۲ بیت) طول داشته باشد، شما نیاز به ۴۴۷ صفر دارید.

۰۱۰۰۰۰۱۱۰۱۰۱۰۰۱۰۰۱۰۱۱۰۰۱۰۱۰۱۰۰۰۰۰۱۰۱۰۱۰۰۰۱۰۰۱۱۱۱۱۰­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­

۷- طول پیام اصلی را به فیلد ۶۴ بیتی بعد از محاسبات مدولار ۴۴۸ اضافه کنید. این پیام ۴۸ کاراکتر طول دارد که در باینری بیان شده است ۱۱۰۰۰۰٫ بنابراین زیر به پایان پیام در قسمت شش اضافه می شود.

۰­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­0­1­1­0­0­0­0

۸- پیام را به شانزده بخش از ۳۲ حرف / بیت تقسیم کنید.

۰۱۰۰۰۰۱۱۰۱۰۱۰۰۱۰۰۱۰۱۱۰۰۱۰۱۰۱۰۰۰۰
۰۱۰۱۰۱۰۰۰۱۰۰۱۱۱۱۱۰­0­0­0­0­0­0­0­0­0­0­0000
۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰
۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰
۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰
۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰
۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰
۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰
۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰
۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰
۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰
۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰
۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰
۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰
۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰
۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۱۰۰۰۰

۹- تبدیل کلمات ۱۶ × ۳۲ حرفی به ۸۰ کلمه با استفاده از یک تابع loop مرحله. ابتدا چهار کلمه برای اولین بار از طریق حلقه انتخاب کنید که رشته های ۱،۳،۹ و ۱۴ از مرحله ۸ است.

دفعه بعد از طریق حلقه ما از کلمات ۲، ۴، ۱۰، ۱۵ از مرحله ۸ استفاده خواهیم کرد.

فرایند بعدی XoR کلمات با هم است. Xoring فقط یک تابع محاسباتی اساسی است که خروجی q را تنها در صورتی می دهد که دو ورودی هر دو دارای ۱ در آن موقعیت باشند – اگر خروجی صفر نباشد.

تابع ((۱۴ XOR 9) XOR 3) XOR 1) است که:

۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰

XOR

۰۱۰۰۰۰۱۱۰۱۰۱۰۰۱۰۰۱۰۱۱۰۰۱۰۱۰۱۰۰۰۰

Is

۰۱۰۰۰۰۱۱۰۱۰۱۰۰۱۰۰۱۰۱۱۰۰۱۰۱۰۱۰۰۰۰

۱۰ – یک چرخش چپ بر روی اعداد – یعنی رقم سمت چپ را به سمت راست حرکت دهید.

بنابراین

۰۱۰۰۰۰۱۱۰۱۰۱۰۰۱۰۰۱۰۱۱۰۰۱۰۱۰۱۰۰۰۰

تبدیل می شود

۱۰۰۰۰۱۱۰۱۰۱۰۰۱۰۰۱۰۱۱۰۰۱۰۱۰۱۰۰۰۰۰

این فرآیند سپس تکرار می شود تا ۸۰ کلمه یا رشته های ۳۲ بیت وجود داشته باشد.

گام بعدی این است که مجموعه ای از توابع را بر روی کلمات در یک منظور خاص اجرا کنیم که از پنج متغیر است که در مرحله تعیین شده اند

۱٫ توابع ترکیبی از عملگرهای AND، OR و NOT همراه با تغییرات چپ.

نتیجه نهایی این است که شما با پنج متغیر باقی می ماند:

H0 – ۰۱۰۰۰۱۰۰۱۰۱۰۱۰۰۱۰۱۱۱۰۰۰۱۰۰۱۱۰۰۱۱

H1- 01010000111001010011100001011000

H2-11110000010110000100011000111101 

H3-01001011111101111111000111100101

H4-01000010110110011100101001001011

۱۱- تبدیل متغیرهای H به hex:

H0- 44a97133

H1- 50e53858

H2- f058463d

H3 – 4bf7f1e5

H4 – 42d9ca4b

۱۲- به متغیرها بپیوندید تا هگز هش را ارسال کنید:

۴۴a9713350e53858f058463d4bf7f1e542d9ca4b

این فرایند اساسی در پشت هش کردن است – به سادگی یک عدد را به دوتایی تبدیل کنید و سپس مجموعه ای از توابع ساده را اجرا کنید که از طریق ترانزیستور استاندارد و فرآیندهای اتوبوس مانند AND، XOR، NOT، Rotate و OR عمل می کنند. این بخشی از دلیل است که ASIC یا چیپ های خاص برنامه می تواند طراحی شده باشد که بهینه سازی هشیش را انجام دهد. در مورد SHA-256 تراشه ها به طور خاص برای بهینه سازی تکرار در تمام مراحل طراحی شده اند تا سرعت ایجاد یک هش از یک ورودی را افزایش دهند. در مورد معدن این بدان معنی است که شما می توانید هش ها را در هر ثانیه با استفاده از تکرار از طریق پارامترهای nonce nonce و غیر اضافی محاسبه کنید و احتمال بیشتری برای برنده شدن جایزه بلوک داشته باشید.

برای کسب اطلاعات در مورد خدمات ارائه شده توسط نوین هاست ، از جمله ثبت نام دامنه ، خرید هاست ، سرور مجازی در لوکیشن های مختلف ، سرور اختصاصی ، هاست ابری و سرور مجازی ایران ، به www.novinhost.org مراجعه کنید یا با شماره ۶۶۰۱۵۸۹۱ تماس بگیرید تا با یکی از اعضای بخش فروش ما صحبت کنید. پیروز و سر بلند باشید.

بازخوردها
مقالات مرتبط
مزایا و معایب مجازی ساز KVM
مجازی ساز KVM چیست و چه مزایایی دارد؟
یکی از پرکاربردترین مجازی سازها که برای کاربران مزایای بسیار زیادی را به همراه دارد، مجازی ساز KVM…
زمان مطالعه: 4 دقیقه
حافظه NVMe چیست؟
حافظه NVMe چیست و چه مزایایی دارد؟
بیشتر افرادی که دارنده وب سایت هستند یا قصد دارند وب سایتی را راه‌اندازی کنند، با هارد سرور…
زمان مطالعه: 4 دقیقه