Khi tính tổng md5 của các tệp lớn, tôi thấy một lõi CPU cpu nhảy tới 100% tuy nhiên phải mất nhiều thời gian, để lại tất cả các lõi khác không hoạt động.Có thể chia nhỏ md5 để chạy trên nhiều lõi/luồng không?
Sự hiểu biết sơ bộ của tôi về md5 là toàn bộ quá trình hoàn toàn tuyến tính, nơi các giá trị phụ thuộc vào tất cả các giá trị trước đó đã đọc và không có gì chúng ta có thể làm để làm cho nó đa luồng. Điều này có đúng không?
Hoặc là có một cách để phá vỡ các tập tin thành nhiều phần, tính toán < một cái gì đó > qua nhiều phần sử dụng đa lõi, và sau đó kết hợp những < một cái gì đó > giá trị vào md5 cuối cùng?
Thư viện chúng tôi đang sử dụng để tính md5sum là http://libmd5-rfc.sourceforge.net/ nhưng tôi sẽ chuyển sang một thư viện khác nếu có thể chia nhỏ md5sum trên nhiều lõi để hoàn thành nhanh hơn.
(Lưu ý: thay đổi một cái gì đó khác hơn md5 không phải là câu hỏi, cũng không thể được thực hiện bởi vì các hệ thống khép kín khác mà giao diện này cũng không phải là câu hỏi này về sự an toàn của việc sử dụng md5..)
Bạn đã sử dụng Google cho điều này chưa? Một trong những lần truy cập đầu tiên cho "triển khai song song MD5" là: http://wwwcip.cs.fau.de/~spjsschl/md5.pdf, có vẻ như câu trả lời ngắn gọn là "Có, nó có thể". –
+1 cho "ghi chú" của bạn. Mặc dù thực tế rằng bạn đang nhận thức được các vấn đề ngụ ý rằng có lẽ bạn nên xem xét việc làm một cái gì đó về họ ... – Ben
@ JerryCoffin Tôi nghĩ rằng bài viết là một chút sai lầm. Tôi thu thập rằng họ đã song song nhiều lần lặp MD5 cho băm mật khẩu, không song song với chính thuật toán MD5. Tối ưu hóa khác của họ là sử dụng một thanh ghi SSE 128 bit lớn thay vì 4 thanh ghi 32 bit. – greg