中 国 矿 业 大 学
密码学课程设计报告
学 院:班 级:姓 名:学 号:指导教师:
计算机科学与技术学院 信安11-2班
08113761 谢 林 2014 年 6月
密码学课程设计
目录
实验一 HILL算法的实现 .................................................. 3
1.1 HILL算法概述 ............................................................................... 3
1.2算法原理与设计思路 ...................................................................... 3 1.3 实验代码 ......................................................................................... 5 1.4 关键算法分析 ............................................................................... 11 1.5 运行结果分析 ............................................................................... 12 1.6 算法安全性分析 ........................................................................... 13
实验二 MD5算法的实现 ................................................. 14
2.1 MD5算法概述 ................................................................................ 14
2.2 算法原理与设计思路 ................................................................... 15 2.3 实验代码 ....................................................................................... 17 2.4 关键算法分析 ............................................................................... 25 2.5 运行结果 ....................................................................................... 28 2.6算法安全性分析 ............................................................................ 28
实验三 AES算法的实现 .................................................. 29
3.1 AES算法概述 ................................................................................ 31
3.2 算法原理与设计思路 ................................................................... 33 3.3 实验代码 ....................................................................................... 33 3.4 关键算法分析 ............................................................................... 42 3.5 运行结果 ....................................................................................... 44 3.6 算法安全性分析 ........................................................................... 44
实验四 ECC算法的实现(选做) ........................................... 29
4.1 ECC算法概述 ................................................................................ 29
4.2 算法原理与设计思路 ................................................................... 29 4.3 实验代码 ....................................................................................... 29 4.4 运行结果 ....................................................................................... 29 4.5 ECC自主探究 ................................................................................ 50
五 实验总结 ........................................................... 51
2
密码学课程设计
实验一 HILL算法的实现
1.1 HILL算法概述
Hil加密算法的基本思想是将个明文字母通过线性变换将它们转换为k个密文字母。脱密只要做一次逆变换就可以了,密钥就是变换矩阵本身。
M=m1m2……ml Ek(M)=c1c2……cl
c1=k11m1+k12m2+……+k1lml c2=k21m1+k22m2+……+k2lm ??
cl=kl1m1+kl2m2+……+kllml
通常对于字母加解密,使mod 26的方法,以上线性方程可以采用矩阵表示。 或写成 C?KM (mod 26),其中:
C=
, M=, K=(kij)l?l , M=K-1C (mod 26)
1.2算法原理与设计思路
图1 密码体制
一个密码系统,通常简称为密码体制(Cryptosystem),由五部分组成(如图1.4所示):
(1)明文空间M,它是全体明文的集合; (2)密文空间C,它是全体密文的集合;
(3)密钥空间K,它是全体密钥的集合。其中每 一个密钥K均由加密密钥Ke和解密密钥Kd组成,即K=? Ke, Kd ?;
3
密码学课程设计
(4)加密算法E,它是一组由M到C的加密变换; (5)解密算法D,它是一组由C到M的解密变换。
如果一个密码体制由其中一个很容易推出另一个,则称为单密钥密码体制或对称密码体制或传统密码体制。而HILL密码体制就是一个典型的例子: Hill加密算法的基本思想是将l个明文字母通过线性变换.将它们转换为l个密文字母。解密只要作一次逆变换就可以了。密钥就是变换矩阵本身,即 :
M=m1 m2 … ml, Ek ( M )=c1 c2 … cl, 其中
c1=k11 m1+k12 m2+… +k1l ml c2=k21 m1+k22 m2+… +k2l ml ……
ct=kl1 m1+kl2 m2+… +kll ml 或写成
C=KM mod n 其中
K=( ki j )l×l
M=K ?1 C mod n
例如,l=4,n=26时有:
11
22
ll
?8 6 9 10? ?23 20 5 1???6 9 5 10? ??? 2 11 18 1K?-1? K???5 8 4 9?? 2 20 6 25? ????10 6 11 425 2 22 25?? ??
?8 6 9 10??23 20 5 1??339 416 312 364? ???????6 9 5 10?? 2 11 18 1???416 339 442 390? ?5 8 4 9?? 2 20 6 25??364 286 339 338??????? ?10 6 11 4??25 2 22 25??364 494 332 131??1 0 0 0?
??0 1 0 0?? ?mod26?0 0 0 1??? 0 0 0 1?c?c?C????c??m?????,M??m?????????m???4
密码学课程设计
若采用从A到Z的26个字母依顺序从0到25编号,M可分别得数字化后4个数字:7,8,11,11,这样 已知M=Hill 因此C=YTIX。
在了解了相应的基础后,可以将程序的设计分为以下几个模块:
1)明文输入模块;
可以简单的设置一个数组存储输入的明文,并定义相应的操作管理明文的输入过程。 2)密钥生成模块;
为了得到密钥,首先可以定义一个二维数组,调用随机数生成函数,结合模26下的模逆算法以及判断矩阵是否可逆,不可逆则重新调用随机生成函数生成密钥。 3)加密运算模块;
加密的本质是对密钥矩阵的n行与明文列相乘后求和得到n个密文,注意到是在模26下的乘法,也应该对结果做相应的处理。 4)密文输出模块;
定义相应的操作和机制,使得密文的输出更合理顺畅。
1.3 实验代码如下: #include
string encryption_or_decryption(int a1,int a2 ,string s1,int a[M][M]) { string s2; int Plaintext[M];//明文数组 int ciphertext[M]={0};//密文数组 for(int i=0;i 5 百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库密码学课程设计报告在线全文阅读。
相关推荐: