Có ai có bất kỳ ví dụ nào về thuật toán MD5 cho vi điều khiển (tốt nhất là 8 bit) không? Dự án của chúng tôi sẽ sử dụng một thiết bị dòng Micro18 PICch.
Có ai có bất kỳ ví dụ nào về thuật toán MD5 cho vi điều khiển (tốt nhất là 8 bit) không? Dự án của chúng tôi sẽ sử dụng một thiết bị dòng Micro18 PICch.
Câu trả lời:
Đây là triển khai MD5 từ EtherNut (dựa trên AVR)
Tôi sẽ gắn bó với việc triển khai MD5 có uy tín và tránh xa các thư viện bạn tìm thấy từ các nhà cung cấp bên thứ 3. RFC 1321 ban đầu được mô tả MD5 có triển khai mẫu C.
Nhắc nhở: các điểm yếu đã biết đối với MD5 là các cuộc tấn công va chạm và không phải là các cuộc tấn công tiền định , vì vậy nó phù hợp với một số ứng dụng mã hóa nhưng không phải là các ứng dụng khác. Nếu bạn không biết sự khác biệt bạn không nên sử dụng, nhưng đừng loại bỏ nó hoàn toàn. Xem http://www.vpnc.org/hash.html .
Bạn có thể tìm thấy một mô tả hay và một số mã giả cho thuật toán MD5 wikipedia tại http://en.wikipedia.org/wiki/MD5
Bạn cũng có thể xem xét đăng câu hỏi này lên stackoverflow vì nó hướng nhiều hơn đến câu hỏi lập trình.
từ trang wikipedia trên MD5 :
... Người ta đã chứng minh rằng MD5 không có khả năng chống va chạm như vậy, MD5 không phù hợp với các ứng dụng như chứng chỉ SSL hoặc chữ ký số dựa trên đặc tính này.
và từ các nhà nghiên cứu SSL trên cùng một trang:
Chúng tôi cũng hy vọng rằng việc sử dụng MD5 trong các ứng dụng khác cũng sẽ được xem xét lại.
Tôi hiểu rằng có lẽ bạn không muốn nghe điều này, nhưng bạn có thực sự cần MD5 không? Nó không nên được sử dụng cho mục đích mật mã vì nó quá không an toàn (và có sẵn thuyền tải các bảng cầu vồng). Nếu bạn đang tìm kiếm thứ gì đó để xác nhận dữ liệu, hãy xem CRC (mã ở đây ) có giá rẻ hơn về mặt tính toán. Nếu bạn đang sử dụng nó cho mục đích mật mã, thì tôi có thể đề nghị chuyển sang SHA không? Vấn đề duy nhất là hầu hết các thuật toán bảo mật bằng mật mã không chạy đặc biệt tốt trên các vi điều khiển. Tôi biết có vẻ như MD5 là "đủ tốt", nhưng cách kỹ thuật là lỗi ở khía cạnh thận trọng.