Câu trả lời thật là: Nó phụ thuộc
Có một số yếu tố cần xem xét, rõ ràng nhất là: cpu bạn đang chạy các thuật toán này và việc triển khai các thuật toán.
Ví dụ: tôi và bạn tôi đều chạy cùng một phiên bản openssl giống hệt nhau và nhận được kết quả hơi khác với các CPU Intel Core i7 khác nhau.
Thử nghiệm của tôi tại nơi làm việc với CPU Intel (R) Core (TM) i7-2600 @ 3,40GHz
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 64257.97k 187370.26k 406435.07k 576544.43k 649827.67k
sha1 73225.75k 202701.20k 432679.68k 601140.57k 679900.50k
Và của anh ấy với CPU Intel (R) Core (TM) i7 920 @ 2,67GHz
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 51859.12k 156255.78k 350252.00k 513141.73k 590701.52k
sha1 56492.56k 156300.76k 328688.76k 452450.92k 508625.68k
Cả hai chúng tôi đều đang chạy các tệp nhị phân giống hệt nhau của OpenSSL 1.0.1j ngày 15 tháng 10 năm 2014 từ gói chính thức của ArchLinux.
Ý kiến của tôi về điều này là với sự bảo mật được bổ sung của sha1, các nhà thiết kế cpu có nhiều khả năng cải thiện tốc độ của sha1 và nhiều lập trình viên sẽ làm việc để tối ưu hóa thuật toán hơn md5sum.
Tôi đoán rằng md5 sẽ không còn được sử dụng vào một ngày nào đó vì có vẻ như nó không có lợi thế hơn sha1. Tôi cũng đã thử nghiệm một số trường hợp trên các tệp thực và kết quả luôn giống nhau trong cả hai trường hợp (có thể bị giới hạn bởi I / O đĩa).
md5sum của một tệp lớn 4,6 GB mất cùng thời gian so với sha1sum của cùng một tệp, tương tự với nhiều tệp nhỏ (488 trong cùng một thư mục). Tôi đã chạy thử nghiệm hàng chục lần và họ đều nhận được kết quả tương tự.
-
Sẽ rất thú vị nếu điều tra thêm về điều này. Tôi đoán có một số chuyên gia xung quanh có thể đưa ra câu trả lời chắc chắn cho việc tại sao sha1 lại nhanh hơn md5 trên các bộ vi xử lý mới hơn.