?
本文檔使用 PHP中文網(wǎng)手冊 發(fā)布
import "hash/crc32"
概述
索引
示例
Package crc32 實現(xiàn)32位循環(huán)冗余校驗或CRC-32校驗和。有關(guān)信息,請參閱http://en.wikipedia.org/wiki/Cyclic_redundancy_check。
多項式以 LSB 優(yōu)先形式表示,也稱為反轉(zhuǎn)表示形式。
有關(guān)信息,請參閱http://en.wikipedia.org/wiki/Mathematics_of_cyclic_redundancy_checks#Reversed_representations_and_reciprocal_polynomials。
常量
變量
func Checksum(data []byte, tab *Table) uint32
func ChecksumIEEE(data []byte) uint32
func New(tab *Table) hash.Hash32
func NewIEEE() hash.Hash32
func Update(crc uint32, tab *Table, p []byte) uint32
type Table
func MakeTable(poly uint32) *Table
MakeTable
crc32.go crc32_amd64.go crc32_generic.go
預(yù)定義的多項式。
const ( // IEEE是迄今為止最常見的CRC-32多項式。 // 由以太網(wǎng)(IEEE 802.3),v.42,fddi,gzip,zip,png,......使用 IEEE = 0xedb88320 // Castagnoli的多項式,用于iSCSI。 // 具有比IEEE更好的錯誤檢測特性。 // http://dx.doi.org/10.1109/26.231911 Castagnoli = 0x82f63b78 // 庫普曼(Koopman's)的多項式。 // 還具有比IEEE更好的錯誤檢測特性。 // http://dx.doi.org/10.1109/DSN.2002.1028931 Koopman = 0xeb31d82e)
CRC-32 校驗和的大小(以字節(jié)為單位)。
const Size = 4
IEEETable 是 IEEE 多項式的表格。
var IEEETable = simpleMakeTable(IEEE)
func Checksum(data []byte, tab *Table) uint32
校驗和使用表格表示的多項式返回數(shù)據(jù)的 CRC-32 校驗和。
func ChecksumIEEE(data []byte) uint32
ChecksumIEEE 使用 IEEE 多項式返回數(shù)據(jù)的 CRC-32 校驗和。
func New(tab *Table) hash.Hash32
New 創(chuàng)建一個新的 hash.Hash32 ,使用表中表示的多項式計算 CRC-32 校驗和。它的 Sum 方法將以 big-endian 字節(jié)順序排列值。
func NewIEEE() hash.Hash32
NewIEEE 創(chuàng)建一個新的 hash.Hash32 ,使用 IEEE 多項式計算 CRC-32 校驗和。它的 Sum 方法將以 big-endian 字節(jié)順序排列值。
func Update(crc uint32, tab *Table, p []byte) uint32
更新返回將 p 中的字節(jié)添加到 crc 的結(jié)果。
表格是一個256字的表格,表示高效處理的多項式。
type Table [256]uint32
func MakeTable(poly uint32) *Table
MakeTable 返回一個由指定多項式構(gòu)成的表。該表的內(nèi)容不得修改。
package mainimport ("fmt""hash/crc32")func main() {// 在此包中,CRC多項式以反轉(zhuǎn)符號表示,// 或LSB優(yōu)先表示。//// LSB優(yōu)先表示是一個帶有n位的十六進制數(shù),其中// 最高有效位表示x?和最低有效系數(shù)// bit表示x?-1的系數(shù)(x?的系數(shù)是隱含的)。//// 例如,CRC32-Q,由以下多項式定義,// x32+ x31+ x2?+ x22+ x1?+ x1?+ x?+ x?+ x?+ x3+ x1+ x?// 具有反轉(zhuǎn)符號0b11010101100000101000001010000001,所以該值// 應(yīng)該傳遞給MakeTable的是0xD5828281。 crc32q := crc32.MakeTable(0xD5828281) fmt.Printf("%08x\n", crc32.Checksum([]byte("Hello world"), crc32q))}