Điểm:0

Blueimp JavaScript-MD5 hoạt động như thế nào?

lá cờ mv

Tôi đã đạt được một số tiến bộ về vấn đề tuyết lở MD5, https://github.com/221294583/crc32 Người ta nói rằng CRC32 nhận ra tuyết lở thông qua XOR đệ quy của đa thức và giá trị ban đầu cùng một lúc. Tôi nghĩ MD5 cũng vậy, nhưng tôi không thể hiểu mã của MD5. Bạn có thể giúp tôi giải thích mã này. https://github.com/blueimp/JavaScript-MD5 , đó là một lượng lớn mã như trong liên kết của tôi. Tôi không phải là nhà phát triển của dự án. Tôi đang sử dụng tiện ích MD5 cho dự án của mình và có thể JavaScript cũng chỉ gọi tiện ích này. CRC32 là phương pháp khác.

DannyNiu avatar
lá cờ vu
Lưu ý bên lề: MD5 không cung cấp bảo vệ toàn vẹn cấp mật mã và nên tránh.Ngay cả khi bạn sẵn sàng đánh đổi tính bảo mật để lấy hiệu suất, thì BLAKE2s-128 vẫn là lựa chọn tốt hơn về mặt hiệu quả, trừ khi bạn có yêu cầu sử dụng phần cứng hiện có.
Điểm:1
lá cờ vu

MD5 về cơ bản hoạt động khác với CRC.

Tôi không quen thuộc với các thuật toán CRC, ngoại trừ việc biết rằng chúng cung cấp khả năng bảo vệ toàn vẹn thông lượng cao cơ bản.

MD5 (cùng với các hàm khác trong họ hàm băm mật mã Merkle-Daamgard như SHA-1, SHA-256, v.v.) có khoảng 4 lớp:

Cấu trúc Merkle-Daamgard: bao gồm

  • Đệm tin nhắn tương thích MD - để đảm bảo các tin nhắn có độ dài khác nhau dẫn đến các chuỗi khối tin nhắn khác nhau. Các thông báo khác nhau có cùng độ dài không phải là mối quan tâm chính đối với phần đệm trình biên dịch MD.

  • Một loạt các lần lặp lại chức năng nén $C(h,m)$, ở đâu $h$ là thông báo từ lần lặp trước của hàm nén (hoặc vectơ khởi tạo nếu đây là lần lặp đầu tiên); và $m$ là khối thông báo cho lần lặp hiện tại.

Việc xây dựng chức năng nén từ mã hóa khối.

Cấu trúc Davies-Meyers là cấu trúc được sử dụng trong họ MD5, SHA-1 và SHA-2. Nó mã hóa thông báo với khối thông báo làm khóa, sau đó thêm hoặc xors thông báo vào khối đầu ra mới để thực hiện chức năng nén một chiều.

Việc xây dựng mã hóa khối.

Có 2 mô hình chính - a) Mạng hoán vị thay thế (SPN), b) Mạng Feistel. Họ MD5, SHA-1 và SHA-2 sử dụng cái sau.

Mạng Feistal thay đổi lặp đi lặp lại một nửa của khối mật mã khối bằng một giá trị được tính toán bằng cách sử dụng hàm làm tròn từ nửa còn lại của khối - phép tính hàm làm tròn liên quan đến khóa con được lấy từ khóa chính, trong trường hợp hàm băm, là khóa khối tin nhắn hiện tại.

Xây dựng hàm tròn.

Mối quan tâm chính của Mạng Feistal là tăng sự nhầm lẫn và phổ biến bằng cách áp dụng lặp đi lặp lại chức năng vòng và chức năng vòng cần cung cấp một số ngẫu nhiên tối thiểu cần thiết.

  • Mô hình ARX (phép cộng số học, phép quay/dịch chuyển và phép toán xor) là một lựa chọn phổ biến.
  • Đa thức nhị phân là khác.
DannyNiu avatar
lá cờ vu
Tôi khá chắc chắn rằng tôi đã thấy câu trả lời tương tự trước đây. Ai đó có thể liên kết với nó xin vui lòng?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.