¿Existe alguna biblioteca/código en Java para calcular el CRC de 32 bits de una secuencia de bytes de una manera coherente con el comando cksum en Unix?Función de cksum compatible con Java
Respuesta
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
Es de código abierto.
¿Has probado la clase CRC32?
http://download.oracle.com/javase/7/docs/api/java/util/zip/CRC32.html
Este es el CRC 32 que utiliza gzip.
He leído en línea en varios lugares que el algoritmo crc-32 de unix cksum no es lo mismo que gzip. No he probado esto, pero es probable que sea cierto. Usar 'Jacksum' (ver arriba) funciona bien para mí. – Kowshik
@Kowshik, puedo verificar que el CRC32 de Java NO es lo mismo que/usr/bin/cksum –
@Kowshik, verifique mi respuesta, por favor. –
La declaración de Carlos Rendon, "Puedo verificar que el CRC32 de Java NO es lo mismo que/usr/bin/cksum", es incorrecta.
Como mencionó Peter Lawrey, puede usar el CRC32 de Java directamente para obtener la misma suma de comprobación que Unix/Linux cksum
.
La forma correcta de hacerlo es:
java.util.zip.CRC32 x = new java.util.zip.CRC32();
x.update(bytes);
StdOut.println("CRC32 (via Java's library) = " + Long.toHexString(x.getValue()));
Fuente: http://introcs.cs.princeton.edu/java/61data/CRC32.java.html
El CRC predeterminado que se utiliza se basa en el polinomio utilizado para el error comprobación CRC en la red estándar ISO/IEC 8802-3: 1989.
Ciertamente devuelve resultados diferentes para mí. De hecho, mi máquina (una Mac) tiene tanto '/ usr/bin/cksum' como'/usr/bin/crc32'. 'cksum <(echo -n hello)' produce '3287646509', mientras' crc32 <(echo -n hello) 'produce' 3610a686', y también comprobé que el 'CRC32' de Java devuelve el mismo valor que la línea de comando' crc32' y NO tiene el mismo valor que la línea de comando 'cksum'. –
También en esta Mac, 'cksum -o 3 <(echo -n hello)' produce '907060870' que es lo mismo que' 3610a686'. Entonces 'cksum -o 3' hace juego con el' CRC32' de Java. Pero ese no es el algoritmo predeterminado para '/ usr/bin/cksum' en esta máquina. –
El algoritmo predeterminado no es de 32 bits. Lea la página del manual de cksum para más detalles –
- 1. Python equivalente de la función cksum UNIX
- 2. ¿LevelDB es compatible con Java?
- 3. ¿Implementación de R-tree compatible con Java?
- 4. Versión Unicode compatible con Java 6
- 5. Compatible con Android JDBC
- 6. ¿La función javascript .map() es compatible con IE8?
- 7. ¿Es IE9 compatible con console.log, y es una función real?
- 8. Hashing de contraseña compatible con Java y PHP
- 9. ¿El modelo de seguridad Java EE es compatible con ACL?
- 10. ¿Cómo es compatible Java 16 bits con Unicode?
- 11. ¿Tomcat 7 ahora es compatible con Java 7?
- 12. ¿Es compatible el bytecode de Java con diferentes actualizaciones de la misma versión de Java?
- 13. OpenCL compatible con DSP
- 14. Dashboard compatible con d3
- 15. ¿Es compatible con declarative_authorization?
- 16. serialización compatible con PHP de C/C++
- 17. Python ¿IDLE compatible con multihilo?
- 18. ¿Por qué la interfaz de la Lista de Java no es compatible con getLast()?
- 19. Compatible con HTTP 100 Continuar con PHP
- 20. SQLite en C y compatible con REGEXP
- 21. ¿Google App Engine es compatible con ftp?
- 22. ¿Forma fácil de convertir expresiones regex a una expresión regular compatible con Java?
- 23. ¿AutoMapper es compatible con Linq?
- 24. ¿lwIP es compatible con Zeroconf?
- 25. ¿OpenRasta es compatible con Mono?
- 26. ¿Es ChoiceMode compatible con ExpandableListView?
- 27. ¿Mono es compatible con XAML?
- 28. ¿C99 es compatible con C89?
- 29. Biblioteca IoC compatible con MonoTouch?
- 30. Escribiendo stl compatible con iteradores
Funciona perfectamente bien para mí. ¡Gracias por la rápida respuesta! – Kowshik
@palacsint: ¿Hay algún código/algo que pueda usar en mi programa java, ya que no quiero ninguna utilidad de terceros – abi1964
Dato curioso, jonelo.jacksum.algorithm.Cksum tiene la misma interfaz que la clase CRC32 de Java, pero da el mismo resultado como unix cksum. –