如何使用Python教DES? 简单的方法……第2部分:舍入函数F()
这是有关使用Python的DES的4部分文章的第二部分。 在前面,说明了DES密钥生成。 本文介绍了DES的另一个重要部分,即Round函数F()或Feistel函数。 在每个回合中,DES使用此功能来计算值以进行进一步处理。 如何使用和在哪里使用是下一篇文章的主题,但是在本文中,我们将介绍它的用法以及如何使用Python进行实现。 DES舍入功能 简而言之,DES舍入函数将两个二进制字符串(32位和48位)作为输入并产生32位输出。 两个输入的二进制字符串是纯文本的一半(每个回合使用上一回合的一半)和回合密钥。 由于输入二进制字符串的大小不相等,因此第一步应该扩大或缩小一个或另一个。 DES选择扩展,并借助扩展表将32位二进制字符串扩展为48位。 一旦两个输入字符串的长度相等,则执行XOR(异或)运算,结果为48位二进制字符串。 下一步是将这些48位字符串传递给S-box,然后将其转换为32位字符串。 最后一步是通过交换位位置来提供随机性的置换。 请参考图1作为参考点。 图1:DES Round函数[来源:Matt Bishop,计算机安全简介。 位扩展…