Documentation
¶
Overview ¶
Package crc32は32ビットの巡回冗長検査 (CRC-32) チェックサムを実装しています。 詳細はhttps://en.wikipedia.org/wiki/Cyclic_redundancy_checkを参照してください。
多項式は、LSBファースト形式、または反転表現としても表されます。
詳細はhttps://en.wikipedia.org/wiki/Mathematics_of_cyclic_redundancy_checks#Reversed_representations_and_reciprocal_polynomialsを参照してください。
Index ¶
Examples ¶
Constants ¶
const ( // IEEEは、断然最も一般的なCRC-32多項式です。 // ethernet (IEEE 802.3)、v.42、fddi、gzip、zip、pngなどで使用されています。 IEEE = 0xedb88320 // キャスタニョーリの多項式、iSCSIで使用されています。 // IEEEよりも優れたエラー検出特性を持っています。 // https://dx.doi.org/10.1109/26.231911 Castagnoli = 0x82f63b78 // クープマンの多項式。 // IEEEよりもエラー検出性能が優れています。 // https://dx.doi.org/10.1109/DSN.2002.1028931 Koopman = 0xeb31d82e )
事前に定義された多項式。
const Size = 4
CRC-32のチェックサムのサイズ(バイト単位)。
Variables ¶
var IEEETable = simpleMakeTable(IEEE)
IEEETableはIEEEポリノミアルのテーブルです。
Functions ¶
func ChecksumIEEE ¶
ChecksumIEEEは、IEEE多項式を使用してデータのCRC-32チェックサムを返します。
func New ¶
NewはTableによって表現される多項式を使用してCRC-32チェックサムを計算する新しいhash.Hash32を作成します。 そのSumメソッドはビッグエンディアンのバイト順で値を配置します。 返されるHash32は、内部状態のマーシャリングとアンマーシャリングを実装するため、encoding.BinaryMarshalerとencoding.BinaryUnmarshalerも実装しています。
Types ¶
type Table ¶
type Table [256]uint32
Tableは、効率的な処理のための多項式を表す256ワードのテーブルです。
func MakeTable ¶
MakeTableは指定された多項式から構築されたTableを返します。 このTableの内容は変更してはいけません。
Example ¶
package main import ( "github.com/shogo82148/std/fmt" "github.com/shogo82148/std/hash/crc32" ) func main() { // このパッケージでは、CRCポリノミアルは逆順記法、またはLSB-firstの表現で表されます。 // // LSB-first表現は、nビットの16進数であり、最上位ビットはx⁰の係数を表し、最下位ビットはxⁿ⁻¹(xⁿの係数は暗黙的に表される)の係数を表します。 // // たとえば、以下のポリノミアルによって定義されるCRC32-Qは、次のような逆順記法を持ちます。 // x³²+ x³¹+ x²⁴+ x²²+ x¹⁶+ x¹⁴+ x⁸+ x⁷+ x⁵+ x³+ x¹+ x⁰ // したがって、MakeTableに渡すべき値は0xD5828281です。 crc32q := crc32.MakeTable(0xD5828281) fmt.Printf("%08x\n", crc32.Checksum([]byte("Hello world"), crc32q)) }
Output: 2964d064