Documentation
¶
Overview ¶
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 も実装しています。
func NewIEEE ¶
NewIEEEは、 IEEE 多項式を使用して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