The SHA algorithms
5-bobdagi hashni eslaysizmi? Xulosa qilish uchun sizda kalit bor va siz tegishli qiymatni massivga qo'ymoqchisiz deylik.
Qiymatni qaysi uyaga qo'yish kerakligini aytish uchun siz hash funktsiyasidan foydalanasiz.
Va siz qiymatni o'sha uyaga qo'yasiz.
Bu sizga doimiy qidiruvlarni amalga oshirish imkonini beradi. Kalitning qiymatini bilmoqchi bo'lganingizda, xash funktsiyasidan yana foydalanishingiz mumkin va u sizga O(1) vaqtida qaysi slotni tekshirish kerakligini aytadi.
Bunday holda, siz hash funktsiyasi sizga yaxshi taqsimot berishini xohlaysiz. Shunday qilib, hash funktsiyasi satrni oladi va sizga ushbu satr uchun slot raqamini beradi.
Comparing files
Yana bir hash funktsiyasi xavfsiz hash algoritmi (SHA) funktsiyasidir. Agar qator berilgan bo'lsa, SHA sizga ushbu satr uchun hashni beradi.
Bu erda terminologiya biroz chalkash bo'lishi mumkin. SHA - bu hash funksiyasi. U hashni hosil qiladi, bu shunchaki qisqa satrdir. hash-jadvallar uchun hash funktsiyasi satrdan massiv indeksiga o'tdi, SHA esa satrdan satrga o'tadi.
SHA har bir satr uchun boshqa hashni hosil qiladi.
Note
Ikki fayl bir xil yoki yo'qligini aniqlash uchun SHA dan foydalanishingiz mumkin. Bu juda katta fayllarga ega bo'lganingizda foydalidir. Aytaylik, sizda 4 GB hajmli fayl bor. Do'stingizda bir xil katta fayl bor yoki yo'qligini tekshirmoqchisiz. Siz ularga katta faylingizni elektron pochta orqali yuborishga harakat qilishingiz shart emas. Buning o'rniga siz SHA hashini hisoblashingiz va uni solishtirishingiz mumkin.
Checking passwords
SHA, shuningdek, asl satr nima ekanligini ko'rsatmasdan, satrlarni solishtirmoqchi bo'lsangiz ham foydalidir. Misol uchun, Gmail buzib tashlandi va tajovuzkor barcha parollarni o'g'irladi deylik! Parolingiz ochiqmi? Yo'q, unday emas. Google asl parolni saqlamaydi, faqat parolning SHA hashini saqlaydi! Parolingizni kiritganingizda, Google uni hashlaydi va maʼlumotlar bazasidagi hash bilan tekshiradi.
Demak, bu faqat hashlarni solishtirish — parolni saqlash shart emas! SHA bu kabi parollarni hashlash uchun juda keng tarqalgan. Bu bir tomonlama hash. Siz satrning hashini olishingiz mumkin.
Lekin hashdan asl satrni ololmaysiz.
Bu shuni anglatadiki, agar tajovuzkor SHA hashlarini Gmail'dan olsa, ular bu hashlarni asl parollarga qaytara olmaydi! Parolni hashga aylantirishingiz mumkin, lekin aksincha emas.
SHA aslida algoritmlar oilasi: SHA-0, SHA-1, SHA-2 va SHA-3. Ushbu yozish paytida SHA-0 va SHA-1 ba'zi zaif tomonlarga ega. Agar parolni hashlash uchun SHA algoritmidan foydalansangiz, SHA-2 yoki SHA-3 dan foydalaning. Parolni hashlash funksiyalari uchun oltin standart hozirda bcrypt hisoblanadi (garchi hech narsa ishonchli emas).