对于计算数字签名来说Hashes是必不可少的,尤其是在电子商务的数字证书领域应用更是广泛。美国国家标准与技术研究院(NIST)拥有一系列的Hashes哈希算法。Hash也被称作“散列”,可以把任意长度的输入字符通过Hash变换成固定长度的输出——也就是散列值。
Secure Hash Algorithm安全散列算法就是其中最为重要的一种Hash算法。SHA能计算出一个数字信息所对应到的,长度固定的字符串(又称信息摘要)的算法。SHA被FIPS认定为五种安全散列算法之一(SHA家族五大算法为SHA-1、SHA-224、SHA-256、SHA-384和SHA-512),因为:
一、由信息摘要反推原输入信息,从计算理论上来说是很困难的;
二、想要找到两组不同的信息对应到相同的信息摘要,从计算理论上来说也是很困难的。任何对输入信息的变动,都有很高的机率导致其产生的信息摘要迥异。
SHA家族对比(图片来自维基百科)
SHA-1, SHA-224, SHA-256, SHA-384 和 SHA-512 都被需要安全散列算法的美国联邦政府所应用,他们也使用其他的密码算法和协定来保护敏感的未保密数据。FIPS PUB 180-1 也鼓励私人或商业组织使用 SHA-1 加密。
除此之外,密码学历史上还出现了一种one-Time Pad(并非平板电脑)的加密系统,被誉为“密码编码学的圣杯”。
该加密系统由Gibert Vernam和Joseph Mauborgne发明。这种密码系统的密钥和明文具有相同的长度,而且密钥只可使用一次,因此也叫“一次一密”。
通信双方事先各有一个可以一页一页撕下来的本子,其中每页记录一个密钥(类似日历的使用),每使用一个密钥加密一条信息后,该页也就作废,下次加密时再使用下一页的密钥。接收者在解密信息后也销毁密钥本中用过的一页密钥。
它采用随机的二进制数据组成密钥。加密时,对密钥和明文进行异或操作,得到密文;解密时用同样的密钥和密文进行异或操作,得到明文。
一次一密度密钥必须是随机产生的,其缺点是需要非常长的密钥,从而导致大量的精力去产生和传输这种密钥。就目前来说,某些高度机密的低带宽信道也有采用这种一次一密度加密系统。据说美国和前苏联之间的热线电话也是采用这种一次一密度加密系统。