2011-02-07 7 views
5

Tôi đang tải xuống tệp từ máy chủ http và phải tính đến một điểm ngẫu nhiên trong quá trình tải xuống, kết nối mạng không thành công hoặc máy tính bị treo. Nếu điều đó xảy ra, tôi bắt đầu tải xuống tiếp tục bằng tiêu đề HTTP "Phạm vi:".Thông báo MD5 của bản tải xuống tiếp tục

Kể từ khi tải xuống phải được xác thực dựa vào MD5 băm, có vẻ như không có cách nào để tôi sử dụng đầu vào mạng sau khi tiếp tục để có được đúng băm, vì java.security.MessageDigest dường như không có phương thức về cơ bản nói rằng "bắt đầu nâng giá trị băm md5 hiện tại từ phần băm md5 một phần mà tôi có từ bản tải xuống trước đó".

Tôi không quen thuộc với nội dung của md5 - điều này có thể về lý thuyết và có thư viện cho phép tôi làm điều đó không?

Tính toán băm md5 từ tệp được tải xuống sẽ là hiệu suất cực kỳ tốn kém.

+0

Tôi đã thêm một 'd' trong tiêu đề vì nó trông giống như bạn đang nói về sơ yếu lý lịch, như trong mảnh giấy có kinh nghiệm làm việc của bạn trên đó – Woot4Moo

Trả lời

3

Bạn có thể nạp MD5 với nội dung của tệp bạn đang tiếp tục từ trước khi cho nó phát trực tuyến.

Nếu bạn đã triển khai MD5 một mình, bạn có thể lưu trạng thái dọc theo tệp được tải xuống một phần và tiếp tục tính toán MD5 từ đó. Ví dụ: sử dụng this MD5 implementation, việc này đơn giản như việc lưu/tải com.twmacinta.util.MD5State state bên trong com.twmacinta.util.MD5. Về nhận xét của bạn, lưu ý rằng việc triển khai gốc hoàn toàn là tùy chọn và nó sẽ hoạt động trong Java thuần túy. Đây là câu trích dẫn từ số documentation:

Lớp này sẽ cố gắng sử dụng phương pháp gốc để tính toán nhanh khi kiểm tra thư viện gốc thích hợp […] Nếu không tìm thấy thư viện, mã sẽ quay trở lại mã Java mặc định (chậm hơn).
+0

Xin lỗi, trong các bài bản gốc tôi didn' t đề cập đến khả năng khởi động lại jvm. Điều này cũng phải được tính đến. – EddyYosso

+0

Bạn nói đúng. Từ khi nhìn vào mã, tôi thu thập rằng bạn phải có khả năng duy trì trạng thái trong thông báo này thật dễ dàng. Cảm ơn bạn. Điều duy nhất làm phiền tôi với thư viện đặc biệt này là những phụ thuộc bản địa. Lớp này có vẻ đầy hứa hẹn mặc dù http://ostermiller.org/utils/MD5.java.html – EddyYosso

2

Tôi vừa hoàn thành việc tạo thư viện cho sự cố này bằng cách sử dụng đề xuất nhanh md5 nhưng không có hỗ trợ gốc. Bạn có thể tuần tự hóa trạng thái và tải lại khi chương trình khởi động lại.

https://code.google.com/p/project-penny/wiki/RecMD5

+0

Tôi đã sửa liên kết tới wiki của dự án-penny (trình quản lý tải xuống). – eckes