Heshlash(hashing)
Heshlash — bu ma'lumotlardan qat'iy uzunlikdagi xesh qiymat hosil qilish jarayoni. Masalan, parollarni saqlashda yoki fayllarni tekshirishda ishlatiladi. Go tilida crypto va hash paketlarida turli heshing algoritmlari mavjud masalan:
- MD5 - tez, ammo xavfsiz emas (faqat tekshirish uchun).
- SHA-1 - MD5'dan biroz xavfsizroq, lekin hozir ishlatish tavsiya qilinmaydi.
- SHA-256, SHA-512 - xavfsizroq va ko'p ishlatiladi.
- bcrypt, scrypt, argon2 - parollar uchun maxsus sekinroq ishlaydi.
Amaliyotni oddiy misol SHA-256 bilan boshlasak. Buning uchun crypto/sha256
va encoding/hex
paketlarini import
qilishimiz kerak bo'ladi. crypto/sha256
asosiy heshlashni amalga oshiradi va natijada bayt massivi hosil bo'ladi.
encoding/hex
bayt massivini odam o'qiy oladigan shaklga (hexadecimal string) o'tkazib beradi.
Misol:
Natija:
SHA-256 byte: [61 36 16 115 186 228 17 164 90 133 206 37 179 65 90 225 241 179 41 21 168 12 127 217 225 176 117 70 82 111 102 92]
SHA-256 hex: 3d241073bae411a45a85ce25b3415ae1f1b32915a80c7fd9e1b07546526f665c
MD5
MD5 (Message-Digest Algorithm 5) kiritilgan ma'lumotdan aniq uzunlikdagi 128-bit (16 bayt) hesh qiymatini hosil qiluvchi heshing algoritmi. Xavfsizlik darajasi yuqori bo'lmaganligi sababli parollarni saqlashda ishlatish tavsiya etilmaydi.
Misol:
Natija:
Base64
Bu binar ma'lumotlarni matnga o'girish uchun ishlatiladigan encode usuli. Har qanday faylni (rasm, video, binar) faqat ASCII belgilaridan iborat matnga o'giradi. Natija odatda asl ma'lumotdan 33% kattaroq bo'ladi. Base64 hesh mattni ortga qaytarish mumkin.
Misol:
Natija: