多语言展示
当前在线:1077今日阅读:27今日分享:41

网络加密中HASH函数及应用

哈希(HASH)函数,又称哈希函数,或者散列函数,是一个将任意长度的消息,转换成固定长度输出的函数。本经验将描述HASH函数应满足的基本安全要求, 介绍HASH函数的原理、种类及应用
工具/原料

HASH函数,安全

方法/步骤
1

初识HASH函数(1)在计算机程序中,我们通常会使用一个数组变量。 这个数组变量有一个索引号(数字),并用这个数字搜索变量数据的值。如数组a可以根据索引3,搜索到内容a[3]=桃子。(2)在perl和Java等语言中,您可以使用HASH表。 哈希表不一定必须用数字来做索引。 例如,第二个表中,将搜索数据“桃子”与索引“山东”相对应,HASH表内部将单词“山东”转换为某个数字32,并使用它作为索引编号来搜索“桃子”。(3) 如果类似的数组很大,存储的内容数量会变多,占用空间也会变大,在查找某个元素过程,都需要挨个循环比较,而通过HASH计算,可以大大减少比较次数。

2

HASH函数特点(1)HASH函数的输入(message)可以是任何数字化的东西,包括图像和音乐,输入(digest)是一系列固定的数值。(2)单向性:给定d,很难找到M使得H(M)= d。虽然可以将书中的所有字符转换为160位长度的数字,但从HASH值不能恢复原始数据。(3)碰撞抵抗:给定M,无法找到M',满足H(M)=H(M');(4)不可预测性(认证):当R是秘密时,MH(R,M)不可预知;(5)提取(密钥推导):如果M具有高熵,则H(M)是均匀的(6)映射分布均匀性:HASH的输出结果中, 0和1 的 bit 比特总数大致相等, 输入变化一个比特,输出有一半以上的结果会变化。

3

哈希函数的构成哈希函数=压缩函数+域扩展(1)压缩函数:输入长度>输出长度,输出为固定长度。(2)域扩展:可以保证输入为任意长度。 (3)迭代型HASH函数:多个压缩函数迭代,得到更好压缩效果。

4

压缩函数(1)压缩函数有1)MDx族:MD4, MD5; RIPEMD-160; 2)Secure Hash Standard (SHS)标准:SHA-1, SHA-224, SHA-256, SHA-384, SHA-512(2)MD5和SHA-1是Internet上常用的HASH函数。 它输出128位MD5和160位SHA-1。 这个输出值被称为哈希值。(3)在Linux上,使用openssl命令可以体验哈希函数。 我们分别用MD5和SHA-1输出字符串“nikkeiBP”的HASH值。

5

HASH函数用途      HASH本来是一种提高处理能力和实现方便访问的数据结构的技术,但它也被用于认证和电子签名。 主要有•公钥密码学的明文预处理(例如,OAEP)•消息认证•哈希树(用于数字签名和时间戳)•通用密钥加密

6

消息认证码(Message authentication codes,MAC)(1)HASH函数分类1)无键哈希函数使用操纵检测代码(MDC,Manipulation Detection Code)2)键控哈希函数使用消息认证码(MAC,MAC: Message Authentication Code)(2)MAC的作用:     假设小红发信息M给小黄,小黄想知道收到的信息是否是小红发的(认证),并且想知道M是否被修改(完整性)。此时,解决办法是:小红在发送M时,加上一个MAC,小黄根据这个MAC来判断完整性。   MAC是基于对称密钥的,代替HASH函数保证信息的完整性,如同HASH函数一样,MAC也采用任意长度的输入并产生固定长度的输出。

注意事项

构造哈希函数时,需要考虑耗时时间、关键字的长度、哈希表的大小等要点。

推荐信息