- 课程名称:人人都该懂密码学,通用密码学原理与应用实战
- 章节名称:
- 第3章:密码学核心-Hash函数
- 函数
- 3-1:Hash函数-本章导学
- 3-2:无处不在的Hash应用
- 3-3:介绍Hash函数的性质
- 讲师姓名:马里布
- 时间:2022-09-05 14:22
课程内容220904
-
cryptographic hash function
-
What is a hash function:
-
Hash函数有很多别名
- 摘要算法
- 杂凑算法
- 数字指纹
- 哈希值
- 散列值
- 检验和
- ……
-
Hash brown:薯饼
- hash切细;弄糟;反复推敲,这里指把马铃薯切成细条
- brown:这里是动词意思,把东西烤成棕色的意思
- 放在一起就是把切成细条的马铃薯烤成饼状
- 把无限多转化为固定的状态过程叫hashing
-
Hash函数的数学表示
- 一个函数H(x)=yH(x) = yH(x)=y被称为Hash函数
- H:{0,1}∗→{0,1}nH: \{0, 1\}^* \rightarrow\{0, 1\}^nH:{0,1}∗→{0,1}n
- 函数特性
- 随机性:输出的yyy是均匀分布的
- 单向性:给定yyy求xxx是不可行的
- 无爪性:无法有效找到不同x1,x2x_1, x_2x1,x2,使得H(x1)=H(x2)H(x_1)=H(x_2)H(x1)=H(x2)
- 有效性:能够快速计算
-
Hash函数的关注点
- 是否密码学Hash:可以反映函数的计算复杂度与安全性问题
- 摘要长度
- 使用场景
-
常见Hash方法
密码学Hash 应用 非密码学Hash 应用 md4 左侧以下推荐使用 Murmur3(32, 64, 128) C++标准库;Nginx;Hadoop等 md5 Fnv(32-1024) Python与golang中有使用 sha1 Siphash(64) sha224 Adler32 SM3(256) 我国国秘算法系列 Crc(16, 32, 64) 压缩包,以及网络协议中数据报文检验码中 sha256 …… sha384 sha512 -
Java hashCode方法原码
-
public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i < value.length; i++) { h = 31 * h + val[i]; } hash = h; } return h; }
-
将上述代码写成公式:
- ∑i=0nS[i]31n−i(mod 232)\sum^n_{i=0}S_{[i]}31^{n-i}(mod\ 2^{32})∑i=0nS[i]31n−i(mod 232)
-
-
学习心得220904
Hash函数内容学习,感觉难度不小,这课听了很长时间,再查找一些资料,感觉才啃了下来