Có bất kỳ thư viện/mã nào trong Java để tính CRC 32 bit của luồng byte theo cách phù hợp với lệnh cksum trong unix không?Chức năng cksum tương thích Java
Trả lời
Jacksum: http://www.jonelo.de/java/jacksum/index.html
cksum algorithm: POSIX 1003.2 CRC algorithm
length: 32 bits
type: crc
since: Jacksum 1.0.0
comment: - under BeOS it is /bin/cksum
- under FreeBSD it is /usr/bin/cksum
- under HP-UX it is /usr/bin/cksum and
/usr/bin/sum -p
- under IBM AIX it is /usr/bin/cksum
- under Linux it is /usr/bin/cksum
Đó là mã nguồn mở.
Bạn đã thử lớp CRC32 chưa?
http://download.oracle.com/javase/7/docs/api/java/util/zip/CRC32.html
Đây là crc 32 sử dụng gzip.
Tôi đọc trực tuyến tại một số nơi mà thuật toán crc-32 của unix cksum không giống với thuật toán của gzip. Tôi đã không thử nghiệm điều này, nhưng nó có thể là sự thật. Sử dụng 'Jacksum' (xem ở trên) hoạt động tốt cho tôi. – Kowshik
@Kowshik, tôi có thể xác minh rằng CRC32 của Java KHÔNG giống như/usr/bin/cksum –
@Kowshik, hãy kiểm tra câu trả lời của tôi. –
Tuyên bố của Carlos Rendon, "Tôi có thể xác minh rằng CRC32 của Java KHÔNG giống như/usr/bin/cksum", không chính xác.
Như Peter Lawrey đã đề cập, bạn có thể sử dụng CRC32 của Java trực tiếp để có cùng kiểm tra như Unix/Linux cksum
.
Cách đúng để làm điều đó là:
java.util.zip.CRC32 x = new java.util.zip.CRC32();
x.update(bytes);
StdOut.println("CRC32 (via Java's library) = " + Long.toHexString(x.getValue()));
Nguồn: http://introcs.cs.princeton.edu/java/61data/CRC32.java.html
CRC mặc định sử dụng dựa trên các đa thức sử dụng cho lỗi CRC kiểm tra tại các mạng tiêu chuẩn ISO/IEC 8802-3: 1989.
Nó chắc chắn trả về kết quả khác nhau cho tôi. Trong thực tế, máy tính của tôi (một máy Mac) có cả '/ usr/bin/cksum' và'/usr/bin/crc32'. 'cksum <(echo -n hello)' sản lượng '3287646509', trong khi' crc32 <(echo -n hello) 'sản lượng' 3610a686', và tôi cũng kiểm tra xem 'CRC32' của Java trả về cùng giá trị với dòng lệnh ' crc32' và KHÔNG có cùng giá trị với dòng lệnh 'cksum'. –
Cũng trên máy Mac này, 'cksum -o 3 <(echo -n hello)' sản lượng '907060870' tương tự như '3610a686'. Vì vậy, 'cksum -o 3' không khớp với' CRC32' của Java. Nhưng đó không phải là thuật toán mặc định cho '/ usr/bin/cksum' trên máy này. –
Thuật toán mặc định không phải là 32 bit. Đọc trang người đàn ông cksum để biết thêm chi tiết –
- 1. Giải thích thông báo ngoại lệ "Đối số không tương thích với chức năng"
- 2. Grails 1.3.7/Java 7 Khả năng tương thích
- 3. Khả năng tương thích Meteor
- 4. match_parent khả năng tương thích
- 5. Application.DoEvents() -> Chức năng tương đương trong java?
- 6. Java tương đương với bản đồ chức năng trong Python
- 7. Chức năng 'nth_element' tương đương trong Java là gì?
- 8. Chức năng tương đương với "_getch()" của C trong Java?
- 9. Chức năng tương tác Haskell
- 10. OpenGL Core và Khả năng tương thích
- 11. java 7 ngôn ngữ tương thích ngược
- 12. C# -Khả năng tương thích excelability
- 13. JBoss: Khả năng tương thích JaxB DataHandler
- 14. Khả năng tương thích D3 IE8?
- 15. Coldfusion/PHP Khả năng tương thích
- 16. OpenGL Khả năng tương thích ngược
- 17. ISerializable và khả năng tương thích ngược
- 18. Khả năng tương thích IronPython 3
- 19. lỗi Java: "loại không tương thích" nhắn
- 20. Tính tương thích của FutureTask của Java
- 21. Lớp tương thích Java ME cho Android
- 22. Mật khẩu với chức năng chính tương thích với các lệnh OpenSSL?
- 23. Chức năng PHP serialize có tương thích với UTF-8 không?
- 24. cảnh báo: không tương thích tuyên bố ngầm được xây dựng trong chức năng 'xyz'
- 25. chức năng inet_aton tương tự cho IPv6
- 26. Chức năng tương đương cho file_get_contents()?
- 27. C-tương đương với chức năng 'setw'
- 28. Chức năng tương tự SwingUtilities.invokeLater trong android?
- 29. Java chức năng động gọi
- 30. EMV TLV Java Chức năng
Hoạt động hoàn toàn tốt cho tôi. Cảm ơn đã phản ứng nhanh chóng! – Kowshik
@palacsint: Có mã/bản ngã mà tôi có thể sử dụng trong chương trình java của mình không, vì tôi không muốn bất kỳ tiện ích nào của bên thứ ba – abi1964
Thực tế thú vị, jonelo.jacksum.algorithm.Cksum có cùng giao diện với lớp CRC32 của Java nhưng cho cùng một kết quả là unix cksum. –