博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SipHash 算法流程
阅读量:6425 次
发布时间:2019-06-23

本文共 1058 字,大约阅读时间需要 3 分钟。

hot3.png

1. souce code and algorithm

2. 算法流程 hash = SipHash(message, key)

1. 初始化 (Initialization)

1.1 初始化四个向量 v0,v1,v2,v3

uint64_t v0 = 0x736f6d6570736575ULL; //unsigned long longuint64_t v1 = 0x646f72616e646f6dULL;uint64_t v2 = 0x6c7967656e657261ULL;uint64_t v3 = 0x7465646279746573ULL;

1.2 将128位的key用little-endian(较小的字节在低位)编码为64位的k0,k1

// uint8_t key[16]; // key = [8, 7, 6, 5, 4, 3, 2, 1, 8, 7, 6, 5, 4, 3, 2, 1] Byte = total 128-bituint64_t k0 = (*(uint64_t*)key); // 64-bituint64_t k1 = (*(uint64_t*)(key+8)) // 64-bit

1.3 用k0,k1初始化v0,v1,v2,v3

v3 ^= k1; // xorv2 ^= k0;v1 ^= k1;v0 ^= k0;

2. 压缩 (Compression)

2.1 split message

message = 'abcdefghijk', length = 11step1: msgs = {'abcdefgh', 'ijk'} // 8 Bytes and 3 Bytesstep2: msgs = {'abcdefgh', '\0\0\0\0\0ijk'} // 8 Bytes and 8 Bytesstep3: msgs = { 0x6162636465666768, 0x0000000000696a6b} // 64-bit and 64-bit

2.2 transfer

for m in msgsdo    v3 ^= m    SipRound    v0 ^= mdone

2.4 SipRound

3. 结束 (Finalization)

v2 ^= 0xffSipRoundSipRoundfinal = v0 ^ v1 ^ v2 ^ v3

转载于:https://my.oschina.net/tigerBin/blog/3038044

你可能感兴趣的文章
揭秘天猫双11背后:20万商家600万张海报,背后只有一个鹿班
查看>>
重置mysq root密码脚本
查看>>
MHA配置参数
查看>>
深入理解Lock
查看>>
vim的块选择
查看>>
HTML --块
查看>>
一个不错的loading效果
查看>>
Debian允许root用户登录
查看>>
linux的文件系统
查看>>
上云利器,K8S应用编排设计器之快到极致
查看>>
袋鼠云服务案例系列 | 从DB2到MySQL,某传统金融平台的互联网转型之路
查看>>
RealServer配置脚本
查看>>
九月份技术指标 华为交换机的简单配置
查看>>
python 写json格式字符串到文件
查看>>
分布式文件系统MogileFS
查看>>
Java23种设计模式案例:策略模式(strategy)
查看>>
XML解析之DOM4J
查看>>
图解微服务架构演进
查看>>
SQL PATINDEX 详解
查看>>
一些常用的网络命令
查看>>