Panjang maksimum untuk input / output MD5

164

Berapa panjang maksimum string yang dapat di hash md5? Atau: Jika tidak memiliki batas, dan jika demikian apa yang akan menjadi panjang maks dari nilai output md5?

Arun David
sumber
2
Ikuti wiki: en.wikipedia.org/wiki/MD5
Frank

Jawaban:

240

MD5 memproses pesan sewenang-wenang menjadi output panjang tetap 128 bit, biasanya direpresentasikan sebagai urutan 32 digit heksadesimal.

Daniel Vassallo
sumber
95
Catatan untuk diri sendiri: hash MD5 panjang = 128 bits= 16 bytes=32 hex digits
checksum
2
[Sunting normal] 32 digit hex dan string hanya berisi kata-kata dari 'az' dan digit dari '0-9'
v1h5
1
Saya perhatikan sedikit kesalahan dalam komentar sebelumnya. Teks harus seperti yang dikutip :) "32 digit hex dan string hanya berisi huruf dari 'az' dan digit dari '0-9'"
Remis B
2
@ Shafizadeh Sebagai jawaban menyatakan, input memiliki panjang yang sewenang-wenang. Ini berarti parameter dapat berapa pun panjang yang Anda butuhkan.
kdojeteri
1
@ Peping Koreksi kecil: Input bisa sepanjang datatype yang digunakan dalam bahasa pemrograman yang digunakan bisa. Contoh: String Java menggunakan array secara internal, oleh karena itu, sebuah string hanya dapat berisi (2 ^ 31) -1 karakter (atau kurang, tergantung pada ukuran heap). Itu juga akan menjadi input maksimum Anda untuk fungsi MD5 di Java. Tapi murni secara teoritis, fungsi MD5 memang bisa memproses input yang panjangnya sewenang-wenang. ;)
RicoBrassers
38

Tambahkan Panjang

Representasi 64-bit dari b (panjang pesan sebelum bit padding ditambahkan) ditambahkan ke hasil dari langkah sebelumnya. Jika b lebih besar dari 2 ^ 64, maka hanya 64 bit b yang digunakan rendah.

  • Hash selalu 128 bit. Jika Anda menyandikannya sebagai string hexdecimal Anda dapat menyandikan 4 bit per karakter, memberikan 32 karakter.
  • MD5 bukan enkripsi. Anda tidak dapat secara umum "mendekripsi" hash MD5 untuk mendapatkan string asli.

Lihat lebih lanjut di sini .

Mark Byers
sumber
Panjang pesan tidak terbatas , Apa maksudmu pesan ? Apakah ini input? Pertanyaan saya adalahMD5("how many characters exactly?");
Shafizadeh
@Shafizadeh Input Anda bisa selama mungkin dalam bahasa pemrograman Anda saat ini, di Java ini akan menjadi (2 ^ 31) -1 karakter dalam sebuah string. Dan ya, "pesan" adalah input.
RicoBrassers
@ Shafizadeh ... atau dari file, input bisa sebesar penyimpanan yang tersedia.
ToolmakerSteve
9

Anda dapat memiliki panjang apa pun, tetapi tentu saja, mungkin ada masalah memori di komputer jika input String terlalu panjang. Outputnya selalu 32 karakter.

Vidar Vestnes
sumber
4
Jika input string terlalu panjang, maka tidak akan ada dalam sistem sejak awal, kecuali jika itu ada dalam file, dalam hal ini Anda dapat mengirimkan blok ke fungsi digest saat dibaca, dengan kata lain, Anda hanya perlu untuk memiliki blockbyte input yang tersedia pada suatu waktu.
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳
6

Algoritme telah dirancang untuk mendukung panjang input acak. Yaitu Anda dapat menghitung hash file besar seperti ISO dari DVD ...

Jika ada batasan untuk input itu bisa berasal dari lingkungan di mana fungsi hash digunakan. Katakanlah Anda ingin menghitung file dan lingkungan memiliki batas MAX_FILE.

Tetapi string output akan selalu sama: 32 hex chars (128 bit)!

Kami
sumber
4

Hash 128-bit MD5 direpresentasikan sebagai urutan 32 digit heksadesimal.

Hamid Nazari
sumber
4

Anda mungkin ingin menggunakan SHA-1 dan bukan MD5 , karena MD5 dianggap rusak.

Anda dapat membaca lebih lanjut tentang kerentanan MD5 di artikel Wikipedia ini .

Daniel Vassallo
sumber
5
ini tidak lebih dari rumor. MD5 cukup baik untuk sebagian besar tugas pengembangan web yang biasa
Your Common Sense
11
Penciptanya, serta Bruce Schneier dan Homeland Security sepakat bahwa itu rusak ... Berapa banyak 'penyebaran desas-desus' yang Anda perlukan untuk meyakinkan Anda bahwa itu sebenarnya telah rusak selama beberapa waktu? Faktanya adalah mudah untuk menemukan input yang menghasilkan hash tertentu. Tentu saja Anda dapat mengurangi risiko ini dengan memberi garam input Anda, menggunakan garam yang cukup besar. Sebagai catatan: SHA-1 dianggap sama rusaknya. Jika Anda menyarankan orang untuk meningkatkan, sarankan mereka untuk meningkatkan ke SHA-2, silakan.
kander 3-10
3
@ander oh saya perlu sedikit. Sebuah contoh. Diberi hash, apakah Anda akan membawa string sumber? Bukan tautan ke beberapa artikel hebat, bukan opini seseorang tetapi hanya sumber string?
Akal Sehat Anda
2
Tidak ada yang benar-benar menyebutkan apa yang sebenarnya mereka maksud dengan istilah "rusak". Meskipun, @YourCommonSense masuk akal.
JSmyth
4
Anda berbicara tentang penggunaan keamanan MD5. Tetapi MD5 (atau teknik hashing lainnya) memiliki banyak kegunaan lain. Saya, ingin satu, ingin menggunakannya untuk mengganti nama file dengan hash-nya. Saya pasti tidak peduli tentang resistensi tabrakan MD5. Semua yang Anda posting masih benar, hanya 2 sen saya.
tfrascaroli
3

Tidak ada batasan untuk input md5 yang saya tahu. Beberapa implementasi membutuhkan seluruh input untuk dimuat ke dalam memori sebelum meneruskannya ke fungsi md5 (yaitu, implementasi bertindak pada blok memori, bukan pada stream), tetapi ini bukan batasan dari algoritma itu sendiri. Outputnya selalu 128 bit. Perhatikan bahwa md5 bukan algoritma enkripsi, tetapi hash kriptografi. Ini berarti Anda dapat menggunakannya untuk memverifikasi integritas sepotong data, tetapi Anda tidak dapat membalik hashing. Perhatikan juga bahwa md5 dianggap rusak, jadi Anda tidak boleh menggunakannya untuk apa pun yang terkait dengan keamanan (masih baik untuk memverifikasi integritas file yang diunduh dan semacamnya).

tammmer
sumber