网络安全_密码学实验_对称加密算法DES

网络安全_密码学实验_对称密码非对称密码_加密算法DES RSA

  • 一、实验环境
  • 二、对称加密DES
    • 1.理解DES算法原理
    • 2.加密过程
    • 3.解密过程
  • 三、运行结果


一、实验环境

PyCharm 2019.2.4 (Professional Edition) & Python 3.7

二、对称加密DES

1.理解DES算法原理

网络安全_密码学实验_对称加密算法DES_第1张图片

2.加密过程

2.1首先第一步要从文件中读取明文;

Python中内置了很多的库,在这里直接调用open函数来读取文本,选择r模式,表示只读操作
网络安全_密码学实验_对称加密算法DES_第2张图片

2.2 对明文进行字符转换成ASCII码,再转换成比特流,每64位分一组,最后不足的用0补齐
网络安全_密码学实验_对称加密算法DES_第3张图片网络安全_密码学实验_对称加密算法DES_第4张图片

2.3 对密钥进行字符转换成ASCII码,再转换成比特流,每64位分一组,最后不足的用0补齐

网络安全_密码学实验_对称加密算法DES_第5张图片

2.4 对每组的64位比特进行IP置换
这一步比较简单,将比特流进行IP置换,核心其实就是置换的IP盒,将明文比特流中的每一位,按照IP盒中的顺序,重新排序:即盒中第x位数字为y,表示将64一组的明文比特流的第y位,放在x位。
网络安全_密码学实验_对称加密算法DES_第6张图片

2.5 生成子密钥,得到16个子密钥,封并且存放在列表中待使用。
密钥是按照64位一组进行的划分,有64位,其实有效位仅为56位,需要通过PC-1盒先选择出有效的该56位:和明文一样,这里也需要分成左右两个部分,每个子部分是28位对该28位,进行重复左移,第LS1,LS2,LS9,LS16次是循环左移1位变换,其他为循环左移2为变换这里将循环左移的位数,写在一个列表SHIFT中,方便调用,每一轮左移,都会得到一个56位子密钥,需要再通过PC-2选择出最终的48比特的子密钥。原理图如下
网络安全_密码学实验_对称加密算法DES_第7张图片网络安全_密码学实验_对称加密算法DES_第8张图片

2.6 将明文分成L,R两组,各32位。对得到的L,R进行16轮的Feistal变换
网络安全_密码学实验_对称加密算法DES_第9张图片

其中,F函数是DES算法最核心的部分,在此,讲解一下一轮变换的具体步骤:
网络安全_密码学实验_对称加密算法DES_第10张图片

网络安全_密码学实验_对称加密算法DES_第11张图片1) 首先使用E盒,将明文32bit拓展为48bit,
网络安全_密码学实验_对称加密算法DES_第12张图片

  1. 然后与子密钥进行异或运算
    网络安全_密码学实验_对称加密算法DES_第13张图片

  2. 得到的结果按每组6位分为8组;再经过S盒,从6位中选择出4位,得到32bit
    网络安全_密码学实验_对称加密算法DES_第14张图片

  3. 经过P盒置换后,得到最终32位结果
    网络安全_密码学实验_对称加密算法DES_第15张图片

2.7 再使用IP-1函数将L,R合并为密文比特流

网络安全_密码学实验_对称加密算法DES_第16张图片
2.8 最后将密文比特流转换成密文字符保存。
网络安全_密码学实验_对称加密算法DES_第17张图片网络安全_密码学实验_对称加密算法DES_第18张图片

3.解密过程

关于解密过程,和加密过程原理是相同的,仅仅是密钥选择顺序不同。如下图:
网络安全_密码学实验_对称加密算法DES_第19张图片

三、运行结果

运行本程序,显示功能清单,选择使用DES加密或者DES解密。首先,选择1,然后输入明文(明文长度不受限制),接着输入密钥,回车,显示加密后的内容。
网络安全_密码学实验_对称加密算法DES_第20张图片在这里插入图片描述然后,选择2,接着输入密钥,回车,显示明文。

网络安全_密码学实验_对称加密算法DES_第21张图片

你可能感兴趣的:(网络安全,web安全,安全,网络)