Saya membaca beberapa dokumen tentang md5, dikatakan 128 bit, tetapi mengapa 32 karakter? Saya tidak bisa menghitung karakternya.
- 1 byte adalah 8 bit
- jika 1 karakter adalah 1 byte
- maka 128 bit adalah 128/8 = 16 byte kan?
EDIT:
SHA-1 menghasilkan 160 bit, jadi ada berapa karakter?
hash
cryptography
md5
cryptographic-hash-function
hash_jr90
sumber
sumber
((1 << (n*4))-1).bit_length()
mana n adalah panjang hash dalam heksadesimalJawaban:
32 karakter sebagai representasi heksadesimal, itu berarti 2 karakter per byte.
sumber
Saya ingin menambahkan beberapa jawaban ke dalam satu posting.
Pertama, jangan anggap hash MD5 sebagai string karakter tetapi sebagai nomor hex. Oleh karena itu, setiap digit adalah digit hex (0-15 atau 0-F) dan mewakili empat bit, bukan delapan.
Lebih jauh lagi, satu byte atau delapan bit diwakili oleh dua digit hex, misalnya b '
1111 1111
' =0xFF
=255
.Hash MD5 memiliki panjang 128 bit dan umumnya diwakili oleh 32 digit hex.
Hash SHA-1 memiliki panjang 160 bit dan umumnya diwakili oleh 40 digit hex.
Untuk keluarga SHA-2, menurut saya panjang hash bisa menjadi salah satu set yang ditentukan sebelumnya. Jadi SHA-512 dapat diwakili oleh 128 digit hex.
Sekali lagi, posting ini hanya berdasarkan jawaban sebelumnya.
sumber
Sebuah "karakter" hex (menggigit) berbeda dari "karakter"
Untuk memperjelas bit vs byte, karakter vs.
2**8
kemungkinan kombinasi: 256 kombinasiSaat Anda melihat karakter hex,
[0-9] + [a-f]
: rangkaian lengkap0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
2**4
: itu berarti satu karakter hex dapat menyimpan 4 bit dalam satu byte (setengah byte).2**8
kombinasi.[0-9a-f][0-9a-f]
dan itu mewakili kedua setengah byte (kita sebut setengah byte sebuah nibble ).Saat Anda melihat karakter byte tunggal biasa, (kami benar-benar akan melewatkan karakter multi-byte dan lebar di sini)
2**8
jangkauan.md5()
dapat menyimpan semua itu, Anda akan melihat semua huruf kecil, semua huruf besar, semua tanda baca dan hal-hal seperti¡°ÀÐàð
, spasi kosong seperti (baris baru, dan tab), dan karakter kontrol (yang Anda bisa ' t bahkan melihat dan banyak yang tidak digunakan).Jadi mereka jelas berbeda dan saya harap itu memberikan pengelompokan terbaik dari perbedaan tersebut.
sumber
MD5 menghasilkan digit heksadesimal (0-15 / 0-F), jadi masing-masing empat bit. 128/4 = 32 karakter.
SHA-1 juga menghasilkan digit heksadesimal (0-15 / 0-F), jadi 160/4 = 40 karakter.
(Karena ini adalah operasi matematika, sebagian besar keluaran fungsi hashing biasanya direpresentasikan sebagai digit hex.)
Anda mungkin berpikir tentang karakter teks ASCII, yaitu 8 bit.
sumber
Itu 32 karakter hex - 1 karakter hex adalah 4 bit.
sumber
Itu adalah angka heksadesimal, bukan karakter. Satu digit = 4 bit.
sumber
Mereka sebenarnya bukan karakter, melainkan digit heksadesimal.
sumber
Satu digit hex = 1 gigitan (empat-bit)
Dua digit hex = 1 byte (delapan-bit)
MD5 = 32 digit hex
32 digit hex = 16 byte (32/2)
16 byte = 128 bit (16 * 8)
Hal yang sama berlaku untuk SHA-1 kecuali panjangnya 40 digit hex.
Saya harap ini membantu.
sumber