Java-совместимая функция cksum - PullRequest
7 голосов
/ 13 октября 2011

Есть ли в Java какая-либо библиотека / код для вычисления 32-битного CRC потока байтов способом, совместимым с командой cksum в unix?

Ответы [ 3 ]

5 голосов
/ 13 октября 2011

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 

Это открытый исходный код.

2 голосов
/ 13 октября 2011

Вы пробовали класс CRC32?

http://download.oracle.com/javase/7/docs/api/java/util/zip/CRC32.html

Это CRC 32, который использует gzip.

0 голосов
/ 09 августа 2017

Заявление Карлоса Рендона «Я могу убедиться, что CRC32 в Java НЕ совпадает с / usr / bin / cksum», неверно.

Как упоминал Питер Лори, вы можете напрямую использовать CRC32 в Java для получения той же контрольной суммы, что и в Unix / Linux cksum.

Правильный способ сделать это:

java.util.zip.CRC32 x = new java.util.zip.CRC32();
x.update(bytes);
StdOut.println("CRC32 (via Java's library)     = " + Long.toHexString(x.getValue()));

Источник: http://introcs.cs.princeton.edu/java/61data/CRC32.java.html

Используемый CRC по умолчанию основан на полиноме, используемом для проверки ошибок CRC в сетевом стандарте. ИСО / МЭК 8802-3: 1989.

...