信息的完整性校验也称为报文鉴别,它要求对接收的信息的任何改动都能被发现。它的主要手段是利用特殊的数学函数,对信息中的一些关键元素进行某种变换运算,得到一个固定长度的“摘要值”,这个摘要值相当于该信息的“数字指纹”。发送信息时,将摘要值一并发送给接收者,接收者收到信息后,再按照相同的算法对信息重新进行变换运算,将得到摘要值与发送来的摘要值进行比较,若两者相同,则确认该信息真实有效,否则可认定该信息已经被篡改。
用于变换运算的特殊函数叫作“单向散列函数”(Hash函数),简单地说,它的基本功能是将一条信息(无论长短),转成相对较短的一段数据,比如一个字符串或者一个整数,这段数据就是“摘要值”。
下面用一个句子“Wang zi bo”,来简要说明摘要值的生成过程。
1.将每个字母转换成ASCII码,得到“879711010312210598111”;
2.用二进制表示这些ASCII码,按8bit进行分组,得到:
01010111 01100001 01101110 01100111
01111010 01101001 01100010 01101111
3.逐组进行“异或”运算。异或运算是一种逻辑运算,运算符号为“⊕”,运算结果为0或1。其运算法则为:如果a、b两个值不相同,则运算结果为1;如果a、b两个值相同,则运算结果为0。异或运算的真值表如下:
运算过程为:
最后的运算结果是“00100001”,这个数值就是“Wang zi bo”的摘要值,在数学上也称为“hash值”把它转换成ASCII字符就是“!”。
观察运算过程可以发现,只要原句中的字母稍有变动,无论是增加、删减、替换还是改变位置,都会使运算后的摘要值发生很大的改变。
上例只是散列函数的一个简单用法,其安全性非常差。实际应用中要用到一些非常复杂的算法,比如MD5,而且分组的长度也很长,比如512bit,所得到的摘要值也有很多的位数,并且同信息本身一样,摘要值也需要加密传送。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。