Esiste una libreria/codice in Java per calcolare il CRC a 32 bit di un flusso di byte in un modo coerente con il comando cksum in unix?Funzione cksum compatibile Java
risposta
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
E 'open source.
Hai provato la classe CRC32?
http://download.oracle.com/javase/7/docs/api/java/util/zip/CRC32.html
Questo è il CRC 32 che utilizza gzip.
Ho letto in linea in diversi punti che l'algoritmo crx-32 di unks crks-32 non è lo stesso di gzip. Non ho provato questo, ma è probabile che sia vero. Usare 'Jacksum' (vedi sopra) funziona bene per me. – Kowshik
@Kowshik, posso verificare che il CRC32 di Java NON sia uguale a/usr/bin/cksum –
@Kowshik, controlla la mia risposta, per favore. –
L'affermazione di Carlos Rendon, "Posso verificare che il CRC32 di Java NON è uguale a/usr/bin/cksum", non è corretto.
Come menzionato da Peter Lawrey, è possibile utilizzare direttamente la CRC32 di Java per ottenere lo stesso checksum di Unix/Linux cksum
.
Il modo corretto per farlo è:
java.util.zip.CRC32 x = new java.util.zip.CRC32();
x.update(bytes);
StdOut.println("CRC32 (via Java's library) = " + Long.toHexString(x.getValue()));
Fonte: http://introcs.cs.princeton.edu/java/61data/CRC32.java.html
Il CRC predefinito utilizzato è basato sul polinomio usato per errore CRC check-in l'standard della rete ISO/IEC 8802-3: 1989.
Per me sicuramente restituisce risultati diversi. In effetti, la mia macchina (un Mac) ha sia '/ usr/bin/cksum' che'/usr/bin/crc32'. 'cksum <(echo -n hello)' produce '3287646509', mentre' crc32 <(echo -n hello) 'produce' 3610a686', e ho anche controllato che '' CRC32' di Java restituisce lo stesso valore della riga di comando ' crc32' e NON lo stesso valore della riga di comando 'cksum'. –
Anche su questo Mac, 'cksum -o 3 <(echo -n hello)' produce '907060870', che è lo stesso di' 3610a686'. Quindi 'cksum -o 3' corrisponde a' CRC32' di Java. Ma non è l'algoritmo predefinito per '/ usr/bin/cksum' su questa macchina. –
L'algoritmo predefinito non è a 32 bit. Leggi la pagina man di cksum per maggiori dettagli –
- 1. Elenco dei Clojure compatibile Java Virtual Machines
- 2. Come rendere questo Java 7 compatibile?
- 3. La funzione di serializzazione PHP è compatibile con UTF-8?
- 4. Funzione password to key compatibile con i comandi OpenSSL?
- 5. puntatore compatibile tipo
- 6. Come generare id_rsa compatibile con ssh (.pub) da Java
- 7. Tomcat 7 è ora compatibile con Java 7?
- 8. Hash di password compatibile con Java e PHP
- 9. Are zlib.compress su Python e Deflater.deflate su Java (Android) compatibile?
- 10. Java 8 è compatibile con GWT 2.6 o 2.7?
- 11. Make Struts 2 compatibile con Java 8 (legacy ASM 3)
- 12. Java: funzione popen() - like?
- 13. Java Funzione Variadica parametri
- 14. EMV TLV Java Funzione
- 15. Funzione modello Java
- 16. java Funzione ipergeometrica generalizzata
- 17. Java bytecode compatibile con diversi aggiornamenti della stessa versione di Java?
- 18. Funzione all'interno di una funzione in Java
- 19. Funzione inversa della funzione Random di Java
- 20. Python IDLE compatibile con multithreading?
- 21. È compatibile con devolution_authorization?
- 22. AWS RDS - HIPAA compatibile?
- 23. RegistrationFormType :: buildForm() non compatibile
- 24. python3 biblioteca ssh compatibile
- 25. Come dovremmo implementare l'API compatibile std :: error_code?
- 26. Serializzazione compatibile PHP da C/C++
- 27. Come rendere AndroidScheduler.mainThread compatibile con Scala Observable?
- 28. Funzione ROT-13 in java?
- 29. Java Equivalente alla funzione iif
- 30. Funzione MessageDigest.isEqual utilizzata in Java
funziona perfettamente per me. Grazie per la risposta rapida! – Kowshik
@palacsint: Esiste un codice/algo che posso utilizzare nel mio programma java, dal momento che non desidero alcuna utilità di terze parti – abi1964
Fun fact, jonelo.jacksum.algorithm.Cksum ha la stessa interfaccia della classe CRC32 di Java ma fornisce lo stesso risultato come unix cksum. –