【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】

这篇具有很好参考价值的文章主要介绍了【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

信息网络安全实验

实验一、DES RSA MD5

一、实验目的

1. 通过对DES算法的代码编写,了解分组密码算法的设计思想和分组密码算法工作模式;
2. 掌握RSA算法的基本原理以及素数判定中的Rabin-Miller测试原理、Montgomery快速模乘(模幂)算法,了解公钥加密体制的优缺点及其常见应用方式;
3. 掌握MD5算法的基本原理,了解其主要应用方法。

二、实验内容

1. DES编程实验
2. RSA编程实验
3. MD5编程实验

三、实验环境

主机:
操作系统:windows11 专业工作站版,64位
cpu: AMD Ryzen 5 4500U
Ram: 16GB

虚拟机:
网络连接:

四、实验过程

(一)、DES编程实验

(1). DES_EDE2算法程序实现框图:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

程序使用说明(Python代码见附录部分):
1. 打开main.py;
2. 给3个参数m(明文)、prok1(DES密钥1)、prok2(DES密钥2)分别赋值;
3. 点击运行即可。

本部分源程序清单:
1. Deslib.py;
2. main.py
3. des.py
4. testCode.py

加解密测试:

1、 DES加密,密钥为112b全0,明文为ff ff ff ff ff ff ff ff,加密结果:
0x35 55 50 b2 15 0e 24 51
2、 DES解密,密钥为112b全0,密文为35 55 50 b2 15 0e 24 51,解密结果:
0xff ff ff ff ff ff ff ff

相关代码:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络
实机运行截图:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络
(2). 算法加密速度测试结果:

硬件配置:

cpu:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

ram:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

测试结果:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

实验说明: 使用spdtst1.txt, spdtst2.txt, hand.jpg, castle.png, paper.pdf等5个文件测试DES算法的速度。文件大小以及对应的加密用时分别为:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

运行时截图:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

(3)、使用CBC方式加密一段64B 自选数据,改变初始向量值,比较加密结果。
64B自选数据:
1sgeiurhn49t340853fiehjgosieurhOIUHRETNBG23456789D!@#$%&*%#@y@
初始向量1:12345678——加密结果1:
qGC4As87+swa1A97AEcR/+UqHKUWN2RsX2rf0m7BfgE3XLOvzkqlzbfBy6rsOu5CHYr8CX65rH5OQ9FNv3dg9zueu7u5kvw8
初始向量2:abcdefgh——加密结果2:
xUhViFWAge1RJZpSKVw5579MFFsv9aDxr8Zt/jS0PvvdfKCXCLWDCQ0cbJKbNR5juP7H5FIRXKqg+bT709pr/vyZQoLxo8Ci

(二)、RSA编程实验
1、RSA算法实现
2、混合加密实验

3、自行编程实现RSA加解密算法
实现框图:
1、密钥生成算法:
【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

2、加密算法:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

3、解密算法:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络
源程序清单:rsa.py

加、解密实例:

明文:m = 125
加密后:167129
解密结果:125

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

4、RSA签名算法

运行结果:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

(三)、MD5编程实验

1、实现自己的MD5算法代码。代码见附录部分。

测试:
message(消息): This is a md5 test.
hash(哈希值): 327d5ac107081f08a3424170232e82d6

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

2、构造一个长度为1KB左右的文本文件,以MD5算法对文件计算Hash值。
文本文件: md5.txt
【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

内容:The Tower Mansion, 29 Melbury Road, is a late-Victorian townhouse in the Holland Park district of Kensington and Chelsea, London, built by the architect and designer William Burges as his home. Designed between 1875 and 1881, in the French Gothic Revival style, it was described by the architectural historian J. Mordaunt Crook as “the most complete example of a medieval secular interior produced by the Gothic Revival, and the last”.[2] The house is built of red brick, with Bath stone dressings and green roof slates from Cumbria, and has a distinctive cylindrical tower and conical roof. The ground floor contains a drawing room, a dining room and a library, while the first floor has two bedrooms and an armoury. Its exterior and the interior echo elements of Burges’s earlier work, particularly the McConnochie House in Cardiff and Castell Coch. It was designated a Grade I listed building in 1949.

Burges bought the lease on the plot of land in 1875. The house was built by the Ashby Brothers, with interior decoration by members of Burges’s long-standing team of craftsmen such as Thomas Nicholls and Henry Stacy Marks.

Hash值:f0723c283cb89be033889ee35ed34e78
转换成2进制:
11110000011100100011110000101000001111001011100010011011111000000011001110001000100111101110001101011110110100110100111001111000

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

(3)、修改构造的文本文件(修改字母或增删内容),再次计算Hash值,与步骤(2)中Hash值进行比较,看看多少bit发生改变。
修改:将The Tower House改成The Tower Mansion
新的Hash值:f44f1d2fc44b3037bf3b771259aeb213
转换成2进制:
11110100010011110001110100101111110001000100101100110000001101111011111100111011011101110001001001011001101011101011001000010011
不同的位数:71.

(4)、测试MD5算法的速度。
硬件配置:
cpu:
【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

ram:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

实验说明:使用spdtst1.txt, spdtst2.txt, icons.txt, tensorflow.whl, userdata.img等5个文件测试MD5算法的速度。文件大小以及对应散列用时分别为:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

运行时截图:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

五、实验结论

(一)、DES编程实验

在DES加密算法中,若使用CBC工作模式,且初始向量不同,则加密结果也不同。

(二)、RSA编程实验

加密数据(明文)的数值大小对RSA加密速度的影响:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

程序运行截图:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

对称密码、非对称密码体制的对比:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

(三)、MD5编程实验
算法流程:
MD5是输入不定长度信息,输出固定长度128位的算法。经过程序流程,生成4个32位数据,最后联合起来成为一个128位的散列值。基本方式为:求余、取余、调整长度、与链接变量进行循环运算,得出结果。
运算方式:
【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

图示:

【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】,网络攻防,密码学,python,web安全,密码学,网络

算法流程描述:

(1)、填充:首先将输入信息的长度进行填充,使得位数%512 == 448;
(2)、记录信息长度:用64位来存储填充前信息长度;
(3)、装入4个标准幻数;
(4)、四轮循环运算。

六、实验涉及到的算法

(1)、DES加解密算法、MD5散列算法;
(2)、rsa加解密算法、rsa数字签名算法、Miller-Rabin素数检测法、Montgomery算法.

附录:实验Python源代码

(一)、DES编程实验

Deslib.py:文章来源地址https://www.toymoban.com/news/detail-827638.html

def eBox(m):
    return m[31] + m[0] + m[1] + m[2] + m[3] + m[4] + \
           m[3] + m[4] + m[5] + m[6] + m[7] + m[8] + \
           m[7] + m[8] + m[9] + m[10] + m[11] + m[12] + \
           m[11] + m[12] + m[13] + m[14] + m[15] + m[16] + \
           m[15] + m[16] + m[17] + m[18] + m[19] + m[20] + \
           m[19] + m[20] + m[21] + m[22] + m[23] + m[24] + \
           m[23] + m[24] + m[25] + m[26] + m[27] + m[28] + \
           m[27] + m[28] + m[29] + m[30] + m[31] + m[0]


def ipBox(m, reverse=False):
    if reverse:
        return m[39] + m[7] + m[47] + m[15] + m[55] + m[23] + m[63] + m[31] + \
               m[38] + m[6] + m[46] + m[14] + m[54] + m[22] + m[62] + m[30] + \
               m[37] + m[5] + m[45] + m[13] + m[53] + m[21] + m[61] + m[29] + \
               m[36] + m[4] + m[44] + m[12] + m[52] + m[20] + m[60] + m[28] + \
               m[35] + m[3] + m[43] + m[11] + m[51] + m[19] + m[59] + m[27] + \
               m[34] + m[2] + m[42] + m[10] + m[50] + m[18] + m[58] + m[26] + \
               m[33] + m[1] + m[41] + m[9] + m[49] + m[17] + m[57] + m[25] + \
               m[32] + m[0] + m[40] + m[8] + m[48] + m[16] + m[56] + m[24]
    else:
        return m[57] + m[49] + m[41] + m[33] + m[25] + m[17] + m[9] + m[1] + \
               m[59] + m[51] + m[43] + m[35] + m[27] + m[19] + m[11] + m[3] + \
               m[61] + m[53] + m[45] + m[37] + m[29] + m[21] + m[13] + m[5] + \
               m[63] + m[55] + m[47] + m[39] + m[31] + m[23] + m[15] + m[7] + \
               m[56] + m[48] + m[40] + m[32] + m[24] + m[16] + m[8] + m[0] + \
               m[58] + m[50] + m[42] + m[34] + m[26] + m[18] + m[10] + m[2] + \
               m[60] + m[52] + m[44] + m[36] + m[28] + m[20] + m[12] + m[4] + \
               m[62] + m[54] + m[46] + m[38] + m[30] + m[22] + m[14] + m[6]


def pBox(m):
    return m[15] + m[6] + m[19] + m[20] + m[28] + m[11] + m[27] + m[16] + \
           m[0] + m[14] + m[22] + m[25] + m[4] + m[17] + m[30] + m[9] + \
           m[1] + m[7] + m[23] + m[13] + m[31] + m[26] + m[2] + m[8] + \
           m[18] 

到了这里,关于【北京航空航天大学】【信息网络安全实验】【实验一、密码学:DES+RSA+MD5编程实验】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包