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