HASH—— 精炼的艺术
——PPCA2014 自主选题演讲徐亦飞
ACM Honored Class2014 年 7 月 24 日
何为哈希…… Hash 函数是把任意长度的二进制串映射
到特定长度的二进制串的函数。
我们写过 HashMap
上上周机考题似乎 能用 hash ? 图片太大
被删了
期待我讲题…… 才不会被你们打脸呢……
HASH—— 精炼的艺术
—— 通俗易懂的科普其应用徐亦飞
ACM Honored Class2014 年 7 月 24 日
哈希的精髓是?
1 、单向性 我们不能从输出的 Hash 值中反向得出结果。 ( 除了暴力枚举 )
应用:信息加密
2 、摘要性 每条信息对应唯一的 Hash 值 ; 而且很短(相对于信息本身) 不同信息的 Hash 值(几乎)不相同。 应用 (低成本的)匹配 / 校验 从所有其他信息到有限地址的映射
感知哈希算法
鲁棒性
越低越好 无所谓 越高越好
加密 / 校验 寻址
此部分参见柏爷的 prensentation(一致性哈希算法等等)
任何一个二进制位的修改都会全盘改变哈希值的输出
鲁棒性
越低越好 越高越好加密 / 校验
“ 李佳俊”的 MD5 码:E33AF7E4911BFCF2F6A84000FB41CF1C“ 李佳骏”的 MD5 码:2ADE18D10F502D533F5895A1E9168A5A
常见的加密算法( Hash Based )
图片太大被删了
1 、补全“ 李佳骏”
“ 李佳骏000000000”2 、分块“ 李佳 | 骏 00|0000|000”
Message Digest Algorithm MD5
以上分块为每 512 位分块,最后一块为 448 位
图片太大被删了
4 、 4 个辅助函数
A=(01234567)16
, B=(89ABCDEF)16 , C=(FEDCBA98)16 , D=(76543210)16
3 、一些初始变量
FF(a,b,c,d,Mj,s,ti) 表示 a=b+((a+F(b,c,d)+Mj+ti)<<<s) GG(a,b,c,d,Mj,s,ti) 表示 a=b+((a+G(b,c,d)+Mj+ti)<<<s) HH(a,b,c,d,Mj,s,ti) 表示 a=b+((a+H(b,c,d)+Mj+ti)<<<s) II(a,b,c,d,Mj,s,ti) 表示 a=b+((a+I(b,c,d)+Mj+ti)<<<s)
图片太大被删了
第一轮a=FF(a,b,c,d,M0,7,0xd76aa478)b=FF(d,a,b,c,M1,12,0xe8c7b756)c=FF(c,d,a,b,M2,17,0x242070db)d=FF(b,c,d,a,M3,22,0xc1bdceee)a=FF(a,b,c,d,M4,7,0xf57c0faf)b=FF(d,a,b,c,M5,12,0x4787c62a)c=FF(c,d,a,b,M6,17,0xa8304613)d=FF(b,c,d,a,M7,22,0xfd469501)a=FF(a,b,c,d,M8,7,0x698098d8)b=FF(d,a,b,c,M9,12,0x8b44f7af)c=FF(c,d,a,b,M10,17,0xffff5bb1)d=FF(b,c,d,a,M11,22,0x895cd7be)a=FF(a,b,c,d,M12,7,0x6b901122)b=FF(d,a,b,c,M13,12,0xfd987193)c=FF(c,d,a,b,M14,17,0xa679438e)d=FF(b,c,d,a,M15,22,0x49b40821)
第二轮a=GG(a,b,c,d,M1,5,0xf61e2562)b=GG(d,a,b,c,M6,9,0xc040b340)c=GG(c,d,a,b,M11,14,0x265e5a51)d=GG(b,c,d,a,M0,20,0xe9b6c7aa)a=GG(a,b,c,d,M5,5,0xd62f105d)b=GG(d,a,b,c,M10,9,0x02441453)c=GG(c,d,a,b,M15,14,0xd8a1e681)d=GG(b,c,d,a,M4,20,0xe7d3fbc8)a=GG(a,b,c,d,M9,5,0x21e1cde6)b=GG(d,a,b,c,M14,9,0xc33707d6)c=GG(c,d,a,b,M3,14,0xf4d50d87)d=GG(b,c,d,a,M8,20,0x455a14ed)a=GG(a,b,c,d,M13,5,0xa9e3e905)b=GG(d,a,b,c,M2,9,0xfcefa3f8)c=GG(c,d,a,b,M7,14,0x676f02d9)d=GG(b,c,d,a,M12,20,0x8d2a4c8a)
第三轮
a=HH(a,b,c,d,M5,4,0xfffa3942)b=HH(d,a,b,c,M8,11,0x8771f681)c=HH(c,d,a,b,M11,16,0x6d9d6122)d=HH(b,c,d,a,M14,23,0xfde5380c)a=HH(a,b,c,d,M1,4,0xa4beea44)b=HH(d,a,b,c,M4,11,0x4bdecfa9)c=HH(c,d,a,b,M7,16,0xf6bb4b60)d=HH(b,c,d,a,M10,23,0xbebfbc70)a=HH(a,b,c,d,M13,4,0x289b7ec6)b=HH(d,a,b,c,M0,11,0xeaa127fa)c=HH(c,d,a,b,M3,16,0xd4ef3085)d=HH(b,c,d,a,M6,23,0x04881d05)a=HH(a,b,c,d,M9,4,0xd9d4d039)b=HH(d,a,b,c,M12,11,0xe6db99e5)c=HH(c,d,a,b,M15,16,0x1fa27cf8)d=HH(b,c,d,a,M2,23,0xc4ac5665)
第四轮a=II(a,b,c,d,M0,6,0xf4292244)b=II(d,a,b,c,M7,10,0x432aff97)c=II(c,d,a,b,M14,15,0xab9423a7)d=II(b,c,d,a,M5,21,0xfc93a039)a=II(a,b,c,d,M12,6,0x655b59c3)b=II(d,a,b,c,M3,10,0x8f0ccc92)c=II(c,d,a,b,M10,15,0xffeff47d)d=II(b,c,d,a,M1,21,0x85845dd1)a=II(a,b,c,d,M8,6,0x6fa87e4f)b=II(d,a,b,c,M15,10,0xfe2ce6e0)c=II(c,d,a,b,M6,15,0xa3014314)d=II(b,c,d,a,M13,21,0x4e0811a1)a=II(a,b,c,d,M4,6,0xf7537e82)b=II(d,a,b,c,M11,10,0xbd3af235)c=II(c,d,a,b,M2,15,0x2ad7d2bb)d=II(b,c,d,a,M9,21,0xeb86d391)
5 、跑!
难以反编译出源码
单向性——数据加密
1 、用于敏感信息的保存(用以校验身份 / 正确性)
当然还是可以暴力破解的
图片太大被删了
进一步……
将明文密码混入“随机因素”,然后进行单向哈希后存储,也就是所谓的“ Salted Hash” 。 这个方式相比上面的方案,最大的好处是针对每一个数据库中的密码,都需要建立一个完整的rainbow table 进行匹配。 因为两个同样使用“ passwordhunter” 作为密码的账户,在数据库中存储的摘要完全不同。
图片太大被删了
再进一步……
目前普遍的加密算法速度都是 O(N) 的,我们可以把他搞慢一点……
图片太大被删了
修改会改变 Hash 值→恶意修改会被发现
→保证了文件的安全!
唯一性——文件校验
图片太大被删了
更多应用:发现相同的文件;节约储存容量;云盘的极速秒传!
唯一性——文件校验
合二为一——数字签名
图片太大被删了
数字签名的简单原理 每个人都有一对“钥匙”(数字身份),其中一个只有她 / 他本人知道(密钥),另一个公开的(公钥)。签名的时候用密钥,验证签名的时候用公钥。
鉴权 完整性 不可抵赖
种类: RSA签名 DSS签名 Hash签名
它是具有法律效应的!
第 十八 号《中华人民共和国电子签名法》已由中华人民共和国第十届全国人民代表大会常务委员会第十一次会议于2004 年 8 月 28 日通过,自 2005 年 4月 1 日起施行。
图片太大被删了
感知哈希算法鲁棒性
越低越好 越高越好
数据的小范围改动不会影响输出的 Hash 值
图片太大被删了
最熟悉的例子——识图搜索
图片太大被删了
感知哈希算法 “多媒体信息区别于一般数据的特性 , 是由人类认知 多媒体的心理过程所决定的 .根据认知心理学理论 ,该心 理过程是对多媒体信息的加工过程 , 有以下几个阶段 : 感觉输入、知觉内容、提取和认知辨识。””
总之,感知哈希算法的强鲁棒性,让人感觉相似的东西能够有较为相似的 hash 值;人分辨不出区别 /没多大区别的东西能够有相同的 hash 值。
于是搜索引擎可以通过搜索相似的 Hash值实现各种识别。
图片太大被删了
感知哈希算法
图形感知哈希:识图搜索 音乐感知哈希:哼歌识别 视频感知哈希:目标追踪 生物感知哈希:人体生物信息
图形感知哈希
aHash pHash dHash SIFT …………
图片太大被删了
aHash 1 、缩小尺寸
图片太大被删了
2 、简化色彩
3 、计算平均
4 、转变黑白
5 、编码哈希 =8A2BC94E02FF539478D2FF5394788ABD5E0F9A
问题
图片太大被删了
2 、简化色彩
4 、计算平均
5 、编码哈希 =8A2BC94E02FF539478D2FF5394788ABD5E0F9A
3 、计算 DCT(不要问我那是啥,我不知道)
更多问题……
图片太大被删了
再次合二为一——更多的验证方式
面部识别 声纹验证 生物识别 (指纹 /手掌几何学 /声音 /视网膜 /虹膜 /签名 / 面部 /基因 /静脉 / 步态 /人物)
……( 所以其实这只是比较像哈希实际不是哈希……参见 zyy 的 pre.)
图片太大被删了
未来……
万物皆可
Hash……
图片太大被删了
谢谢……是不是过于简单了……
这样最好,才不给你们打脸
Reference: Baidu Wikipedia Csdn Cnki …………
Thanks to: Myself Myself Myself Myself ……