crc32c

crc32c

[1] RFC 4960 - Stream Control Transmission Protocol ( 版) <http://tools.ietf.org/html/rfc4960#section-6.8>

[2] RFC 4960 - Stream Control Transmission Protocol ( 版) <http://tools.ietf.org/html/rfc4960#appendix-B>

[3] Hypertext Transfer Protocol (HTTP) Digest Algorithm Values ( 版) <http://www.iana.org/assignments/http-dig-alg/http-dig-alg.xhtml>

CRC32c The CRC32c algorithm is a 32-bit cyclic redundancy check. It achieves a better hamming distance (for better error-detection performance) than many other 32-bit CRC functions. Other places it is used include iSCSI and SCTP. The 32-bit output is encoded in hexadecimal (using between 1 and 8 ASCII characters from 0-9, A-F, and a-f; leading 0's are allowed). For example, CRC32c=0a72a4df and crc32c=A72A4DF are both valid checksums for the 3-byte message "dog". [RFC4960 appendix B]

[5] HTTP ダイジェストアルゴリズムとしての値 CRC32c は2015年6月に突然 IANA登録簿に登録されています。誰が何に使っているのかは謎です。

[4] Hashes and ETags: Best Practices - Cloud Storage — Google Cloud Platform ( 版) <https://cloud.google.com/storage/docs/hashes-etags>

All GCS objects have a CRC32c hash. CRC32C is a 32 bit Cyclic Redundancy Check (CRC) based on the Castagnoli polynomial. This CRC is described by the IETF specification for SCTP. Libraries for computing CRC32c include Boost for C++, crcmod for Python, and digest-crc for Ruby. Java users can find an implementation of the algorithm in the GoogleCloudPlatform crc32c Java project.

Note: The CRC popularly known as CRC32 differs from the CRC32c algorithm used by Google Cloud Storage.

The Base64 encoded CRC32c is in big-endian byte order.