区块链通俗读本
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 搅拌机

计算机技术的发展,加上数学家们的努力,让密码学有了算力的支持,算法也升级换代,从而使密码学从艺术过渡到了技术,产生了现代密码学:对称密码体制和非对称密码体制。

对称密码体制的核心为“置乱”:

(1)要求从密文中不能获得明文的统计特征,即满足扩散要求;

(2)要求从密文中不能获得密钥的统计特征,即满足混淆要求。

我们不妨称之为信息“搅拌”。

2.2.1 ASCII编码

ASCII编码表明一个字母可以表达为8个0、1的串,为了使人们易于查看,又表示成两位十六进制数,见表2.1。

表2.1 ASCII编码表示例

不管明文是用何种文字书写的,都可以将“字”编码成一个二进制数。例如,把A打破变为01000001,再打乱(运算)这个“数”,这就是加密。

2.2.2 公开算法

以前,算法和密钥都是保密的。20世纪70年代,美国国家标准局向公众征集加密算法,IBM提交的算法胜出并作为DES(Data Encryption Standard)向社会公布。这是密码史上第一次公开算法,目的有三:一是让公众评判算法的优劣,二是体现算法开发者的自信,三是希望该算法得到更广泛的应用。这次不光公开了算法,连密钥的长度也公开了:DES的密钥长度为64位,实际为56位,另外8位为校验位。

2.2.3 信息搅拌

可以把DES当作一台信息搅拌机,对64位的数据组进行搅拌,搅拌时用到如下方法:

(1)基于二进制的置换表置换,如把第58位调到第1位,把第50位调到第2位……这就“打破”了字符的整体性;

(2)使用子密钥进行异或;

(3)扩展和压缩变换(使用S盒替换表);

(4)打乱、重组(使用P盒置换表)。

2.2.4 搅拌16次

对64位密钥进行置换及位移,即通过“搅拌”生成一个48位子密钥,再通过“搅拌”生成第二个子密钥,如此,一共生成16个子密钥。

拿第1个子密钥对明文进行信息搅拌,再拿第2个子密钥对前述结果进行第2次信息搅拌,如此,直至完成16次信息搅拌。这就是对一组信息的搅拌过程。

2.2.5 加密与解密

按64位,即8个字符的密钥长度,对明文M进行分组,也就是8个字符一组,最后一组不足8个字符时用空格补齐。然后,对每组进行上述信息搅拌,得到密文。

当然,上述信息搅拌是有规律的,我们称之为算法。通过算法实现加密,再用相同的密钥进行逆过程,实现解密。