MD5 giriş / çıkış için maksimum uzunluk


164

Md5 karma olabilen dizenin maksimum uzunluğu nedir? Veya: Sınırı yoksa ve md5 çıkış değerinin maksimum uzunluğu ne olur?


Yanıtlar:


240

MD5, rastgele uzunluktaki bir iletiyi, tipik olarak 32 onaltılık basamak dizisi olarak gösterilen 128 bitlik sabit uzunluklu bir çıktıya işler.


95
Kendi kendine not: MD5 karma uzunluğu = 128 bits= 16 bytes=32 hex digits
sağlama toplamı

2
[Normal Düzenleme] 32 onaltılık basamak ve dize yalnızca 'az' ve '0-9' arasındaki rakamları içerir
v1h5

1
Önceki yorumlarda küçük bir hata fark ettim. Metin alıntı olarak :) olmalıdır "32 onaltılık rakam ve dize sadece içerdiği harfleri '0-9' dan 'az' dan ve rakam"
Remis B

2
@Shafizadeh Yanıt belirtildiği gibi, girdinin keyfi bir uzunluğu vardır. Bu, parametrenin ihtiyacınız olan herhangi bir uzunluk olabileceği anlamına gelir.
kdojeteri

1
@Peping Küçük bir düzeltme: Giriş, kullanılan programlama dilinde kullanılan veri tipi olabildiği sürece olabilir. Örnek: Java dizeleri dahili olarak bir dizi kullanır, bu nedenle bir dize yalnızca (2 ^ 31) -1 karakter içerebilir (veya yığın boyutuna bağlı olarak daha az) .Java'daki MD5 işlevi için maksimum girişiniz de bu olur. Ancak teorik olarak, MD5 işlevi gerçekten keyfi uzunluktaki bir girişi işleyebilir. ;)
RicoBrassers

38

Uzunluk ekleyin

B'nin 64 bitlik bir temsili (dolgu bitleri eklenmeden önceki mesajın uzunluğu) önceki adımın sonucuna eklenir. Beklenmedik bir durumda, b'nin 2 ^ 64'den büyük olması durumunda, yalnızca b düşük seviyeli 64 biti kullanılır.

  • Karma her zaman 128 bittir. Onaltılık bir dize olarak kodlarsanız, karakter başına 4 bit kodlayarak 32 karakter verebilirsiniz.
  • MD5 şifreleme değildir. Orijinal dizeyi almak için bir MD5 karmasını genel olarak "şifresini çözemezsiniz".

Daha fazlasını burada görün .


Mesajın uzunluğu sınırsızdır , Ne demek mesajı ? Girdi mi? Benim sorumMD5("how many characters exactly?");
Shafizadeh

@Shafizadeh Girişiniz geçerli programlama dilinizde mümkün olduğunca uzun olabilir, Java'da bu bir dizede (2 ^ 31) -1 karakter olacaktır. Ve evet, "mesaj" girdi.
RicoBrassers

@Shafizadeh ... veya bir dosyadan, girdi kullanılabilir depolama alanı kadar büyük olabilir.
ToolmakerSteve

9

Herhangi bir uzunluğa sahip olabilirsiniz, ancak String girişi çok uzunsa, elbette bilgisayarda bir bellek sorunu olabilir. Çıktı her zaman 32 karakterdir.


4
Dize girişi çok uzunsa, bir dosyada olmadıkça, ilk etapta sistemde mevcut olmaz, bu durumda blokları okundukları sırada özet fonksiyonuna geçirebilirsiniz, başka bir deyişle, sadece blockbir kerede girdinin baytına sahip olmak .
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

6

Algoritma, keyfi giriş uzunluğunu destekleyecek şekilde tasarlanmıştır. Yani bir DVD ISO gibi büyük dosyaların karmaları hesaplayabilirsiniz ...

Giriş için bir sınırlama varsa, karma işlevinin kullanıldığı ortamdan gelebilir. Diyelim ki bir dosya hesaplamak istiyorsunuz ve ortamın MAX_FILE sınırı var.

Ancak çıktı dizesi her zaman aynı olacaktır: 32 onaltılık karakter (128 bit)!


4

128 bitlik bir MD5 karması, 32 onaltılık basamak dizisi olarak temsil edilir.


4

MD5'in bozuk olduğu kabul edildiğinden , MD5 yerine SHA-1 kullanmak isteyebilirsiniz .

MD5 güvenlik açıkları hakkında daha fazla bilgiyi bu Wikipedia makalesinde bulabilirsiniz .


5
bu bir söylenti değil. MD5, olağan web geliştirme görevlerinin çoğu için yeterince iyidir
Common Sense

11
Onun yaratıcısı, Bruce Schneier ve Anayurt Güvenliği'nin kırıldığı konusunda hemfikir ... Kaç tane daha 'söylenti yaymak' sizi bir süreliğine kırıldığına ikna etmeniz gerekiyor? Gerçek şu ki, belirli bir karma oluşturan bir giriş bulmak keyfi olarak kolaydır. Tabii ki, yeterince büyük tuzlar kullanarak girdilerinizi tuzlayarak bu riski azaltabilirsiniz. Bir yan notta: SHA-1'in kırık olduğu kabul edilir. İnsanlara yükseltme yapmalarını tavsiye ediyorsanız, lütfen SHA-2'ye yükseltme yapmalarını tavsiye edin.
kander

3
@kander oh Çok az ihtiyacım var. Bir örnek. Bir karma verildiğinde, bir kaynak dize getirecek misiniz? Harika bir makalenin bağlantısı değil, birisinin görüşü değil, sadece bir kaynak dizesi mi?
Ortak Duygunuz

2
Kimse gerçekten "kırık" terimi altında ne demek istediklerinden bahsetmedi. Rağmen @ YourCommonSense mantıklı.
JSmyth

4
MD5'in güvenlik kullanımlarından bahsediyorsunuz. Ancak MD5'in (veya başka bir karma tekniğinin) bir ton başka kullanımı vardır. Birincisi, bir dosyayı karma ile yeniden adlandırmak için kullanmak istiyorum. MD5'in çarpışma direnci konusunda kesinlikle endişelenmiyorum. Gönderdiğiniz her şey hala doğrudur, sadece 2 sentim.
tfrascaroli

3

Bildiğim md5'in girişi için bir sınır yoktur. Bazı uygulamalar, md5 işlevine geçmeden önce tüm girdinin belleğe yüklenmesini gerektirir (yani, uygulama bir akışta değil, bir bellek bloğunda çalışır), ancak bu algoritmanın kendisinin bir sınırlaması değildir. Çıktı her zaman 128 bittir. Md5'in bir şifreleme algoritması değil, bir şifreleme karması olduğunu unutmayın. Bu, bir veri kümesinin bütünlüğünü doğrulamak için kullanabileceğiniz, ancak karma işlemini ters çeviremeyeceğiniz anlamına gelir. Ayrıca md5'in bozuk olarak kabul edildiğini unutmayın, bu yüzden güvenlikle ilgili herhangi bir şey için kullanmamalısınız (indirilen dosyaların ve benzerlerinin bütünlüğünü doğrulamak hala iyidir).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.