php hash crc32,hash/crc32

import "hash/crc32"

概述

索引

示例

概述

Package crc32 实现32位循环冗余校验或CRC-32校验和。有关信息,请参阅http://en.wikipedia.org/wiki/Cyclic_redundancy_check。

多项式以 LSB 优先形式表示,也称为反转表示形式。

有关信息,请参阅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

常量

预定义的多项式。

const (        // IEEE是迄今为止最常见的CRC-32多项式。        // 由以太网(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 校验和的大小(以字节为单位)。

const Size = 4

变量

IEEETable 是 IEEE 多项式的表格。

var IEEETable = simpleMakeTable(IEEE)

func Checksum

func Checksum(data []byte, tab *Table) uint32

校验和使用表格表示的多项式返回数据的 CRC-32 校验和。

func ChecksumIEEE

func ChecksumIEEE(data []byte) uint32

ChecksumIEEE 使用 IEEE 多项式返回数据的 CRC-32 校验和。

func New

func New(tab *Table) hash.Hash32

New 创建一个新的 hash.Hash32 ,使用表中表示的多项式计算 CRC-32 校验和。它的 Sum 方法将以 big-endian 字节顺序排列值。

func NewIEEE

func NewIEEE() hash.Hash32

NewIEEE 创建一个新的 hash.Hash32 ,使用 IEEE 多项式计算 CRC-32 校验和。它的 Sum 方法将以 big-endian 字节顺序排列值。

func Update

func Update(crc uint32, tab *Table, p []byte) uint32

更新返回将 p 中的字节添加到 crc 的结果。

type Table

表格是一个256字的表格,表示高效处理的多项式。

type Table [256]uint32

func MakeTable

func MakeTable(poly uint32) *Table

MakeTable 返回一个由指定多项式构成的表。该表的内容不得修改。

示例

package mainimport ("fmt""hash/crc32")func main() {// 在此包中,CRC多项式以反转符号表示,// 或LSB优先表示。 LSB优先表示是一个带有n位的十六进制数,其中// 最高有效位表示x⁰和最低有效系数// bit表示xⁿ-1的系数(xⁿ的系数是隐含的)。 例如,CRC32-Q,由以下多项式定义,//x³²+ x³¹+ x²⁴+ x²²+ x¹⁶+ x¹⁴+ x⁸+ x⁷+ x⁵+ x³+ x¹+ x⁰// 具有反转符号0b11010101100000101000001010000001,所以该值// 应该传递给MakeTable的是0xD5828281。

crc32q := crc32.MakeTable(0xD5828281)

fmt.Printf("%08x\n", crc32.Checksum([]byte("Hello world"), crc32q))}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值