SHA-1的算法属于密码学的知识,但是这个地方主要是由于在IPv6生成stable address的时候用到,所以在IPv6的模块进行介绍。
安全哈希算法(Secure Hash Algorithm)
SHA1是一种数据加密的算法,其思想就是将一段明文加密成一个不可逆的密文。 因为是不可逆的,所以是无法通过密文推测出明文的内容,所以这个算法不会被用来进行传输,一般主要是用来进行数据完整性校验。在数字签名之中应用比较广泛, 数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表示明文未被改动,如果不一致表示明文已被篡改。如下图展示下载软件的时候提供的SHA1用于验证下载数据包是否被破坏。
SHA1算法描述[FIPS 180-4]
网络中有很多这样的加密工具,可以先通过在线工具尝试一下效果,如下图所示:输入一段明文,然后选择SHA1(支持好多加密算法)输出一段密文ae5b5072d6bf792cb9398e28f01b656594b08046,可以看到输出是一个160位的消息摘要。
SHA1把消息当成一个位(bit)字符串来处理。本文中,一个字(Word)是32位,而一个字节(Byte)是8位。比如,字符串“abc”可以被转换成一个位字符串
01100001 01100010 01100011。它也可以被表示成16进制字符串: 0x616263.
简单来讲:SHA-1算法是把输入二进制串分成512位的块,把二进制串的位数存储在最后64位,二者之间填充为0,依次对每个块进行一些列高深的数学运算,最后得到一个160位的二进制串。
下面说明下整个算法的过程
1. 补位
2.初始化Hash Value
3)SHA-1算法
4) SHA-1分组处理
SHA-1算法结论
参考资料