散列(又叫Hash)和加密在身份校验、敏感信息传输等应用中用途广泛。
把他们放在一起写的原因是,网上太多资料,将散列和加密的概念混为一谈,误导性极大。
由于编码/解码运算和上述二者有一定的相似之处,因此放在这里一并讲述。
注:本文中,为了表述严谨,所有的“位”代表的是字符个数之意,而bit则指代计算机数据中的基本单位比特。
三者的共同点
它们都表述了一种映射关系,将原始数据A映射到新的数据B。
在散列运算中,B一般称之为摘要,英文为digest. 其代表算法有MD5,SHA1, SHA256等。从A -> B的运算,称之为散列、哈希;从B -> A的运算(严格意义上来说,它不算一种运算)是不存在的,当然可以通过一些其他的手段比如查表法来实现,这个在下文中会谈到。
在加密运算中,A一般称之为明文或原文,B一般称之为密文。A->B的运算,称为加密&#x