2012-03-14 46 views
10

Tôi cần hiểu thuật toán băm Md5. Tôi đã đọc tài liệu và tiểu bang nêu một số tài liệu và tiểu bang nêu rõĐệm trong thuật toán băm MD5

"Thư" được đệm "(mở rộng) sao cho chiều dài của nó (theo bit) là đồng nghĩa với 448, modulo 512. Đó là, thư được mở rộng để chỉ 64 bit nhút nhát là bội số của 512 bit dài. Đệm luôn được thực hiện, ngay cả khi độ dài của thư là đã đồng dư với 448, modulo 512. "

Tôi cần hiểu ý nghĩa của thuật ngữ đơn giản, đặc biệt là 448 modulo 512. Từ MODULO là vấn đề. Xin vui lòng tôi sẽ đánh giá cao các ví dụ đơn giản này. Hài hước mặc dù, đây là bước đầu tiên để băm MD5! :)

Cảm ơn

Trả lời

10

Modulo hoặc mod, là một hàm kết quả khi nói cho bạn phần còn lại khi hai số được chia cho nhau.

Ví dụ:

5 modulo 3:

5/3 = 1, với 2 phần còn lại. Vì vậy, 5 mod 3 là 2.

10 modulo 16 = 10, vì 16 không thể được thực hiện.

15 modulo 5 = 0, vì 15 chuyển thành 5 chính xác 3 lần. 15 là bội số của 5.

Trở lại trường học bạn đã học được điều này là "Còn lại" hoặc "Còn lại", modulo chỉ là một cách ưa thích để nói điều đó.

Điều này nói ở đây, đó là khi bạn sử dụng MD5, một trong những điều đầu tiên xảy ra là bạn sẽ gửi thư của mình để đủ dài. Trong trường hợp MD5, thông điệp của bạn phải là n bit, trong đó n = (512 * z) +448 và z là bất kỳ số nào. Ví dụ, nếu bạn có một tệp dài 1472 bit, thì bạn sẽ có thể sử dụng nó dưới dạng băm MD5, vì 1472 modulo 512 = 448. Nếu tệp dài 1400 bit, thì bạn sẽ cần phải đệm thêm 72 bit trước khi bạn có thể chạy phần còn lại của thuật toán MD5.

0

Mô-đun là phần còn lại của bộ phận. Trong ví dụ

512 mod 448 = 64 
448 mod 512 = 448 

Một cách tiếp cận của 512 mod 448 sẽ được chia chúng 512/448 = 1,142 ..

Sau đó bạn trừ đi 512 từ số kết quả trước khi dot nhân 448:

512 - 448*1 == 64 That's your modulus result. 

Những điều bạn cần biết rằng 448 ngắn hơn 64 bit so với nhiều 512.

Nhưng điều gì sẽ xảy ra nếu từ 448 đến 512 ??

Thông thường chúng ta cần phải trừ đi 448 x (kết quả của mô đun).

447 mod 512 = 447; 448 - 447 = 1; (all good, 1 zero to pad) 

449 mod 512 = 1; 448 - 449 = -1 ??? 

Vì vậy, giải pháp vấn đề này sẽ là nhận nhiều hơn 512 nhưng vẫn ngắn hơn 64;

512*2 - 64 = 960 
449 mod 512 = 1; 960 - 449 = 511; 

Điều này xảy ra bởi vì sau đó chúng ta cần thêm 64 bit thông báo ban đầu và độ dài đầy đủ phải là bội số của 512.

960 - 449 = 511; 
511 + 449 + 64 = 1024; 
1024 is multiple of 512; 
Các vấn đề liên quan