密码学实验设计
存一下实验内容
中途中有进行借鉴,但没存档,若有人看到来源,请告知我,我会再补上
嘘......
这个作者很懒,什么都没留下…
展开
-
目录+源码
目录1.古典密码 1.1仿射密码 1.2维吉尼亚密码 1.3 PLAYFAIR1.4 ADFGX1.5 HILL加密 2.序列密码 2.1 LFSR 2.2 RC4 2.3 A5 3.DES加解密 3.1 DES3.2 DES-ECB 3.3 DES-CBC 3.4 DES-CFB 3.5 DES-OFB 3.6 DES-CTR3.7 模式选用和比较 4.RSA加密 5.Hash函数(MD5) 6.综合实验 源码:1.古典密码 1.1仿射密码#include原创 2021-01-28 13:16:58 · 1291 阅读 · 1 评论 -
6.综合实验
要求:Alice想通过公共信道给Bob传输一份秘密文件(非常大),又知道,很多人和结构想得到这份文件。如果你是Alice,你应该怎么做?请设计一个方案,并编程实现。a)简介将大文件完整地,不被篡改地,旁人看不懂地传输。b)算法流程Alice:Bob:c)算法实现在3.3,4,5的基础上:前期准备(获取密钥):图6.1 前期准备Alice:图6.2 Alice实现Bob:图6.3 Bob实现d)算法验证验证能否顺利加解密:图6.4 验证e)算法分析能否实现发送发原创 2021-01-28 12:59:51 · 3626 阅读 · 0 评论 -
5.Hash函数(MD5)
要求:选择MD5或者其它的Hash函数进行编程实现。a)简介Hash函数(杂凑函数/散列函数)是将任意长的消息M变换为较短的、固定长度的值H(M)的不可逆的单向密码体制。Hash函数是密码学的基本工具,在数字签名和消息的完整性检测等方面有着重要的应用。b)算法流程MD5算法的流程可以分为:附加填充位、初始化链接变量、分组处理和步函数。附加填充位:首先需要对明文信息进行填充,使其位长度模512和448同余。因此,信息的位长度被扩展至512×N + 448。然后在这个结果后面附加一个以64位二进制表示原创 2021-01-28 12:58:02 · 1417 阅读 · 0 评论 -
4.RSA加密
要求:利用所学的生成素数的算法,生成两个尽可能的素数,进一步实现RSA的加密算法。a)简介RSA公钥算法由 MIT 的Rivest, Shamir和Adleman在I978年提出来的。是被最广泛接受并实现的通用公钥密码算法,已成为公钥密码的国际标准。该算法的数学基础是初等数论中的欧拉定理,其安全性基于大整数因子分解的困难性。b)算法流程1)密钥的生成1. 选择两个大素数 p和q,(p≠q,需要保密)2. 计算n=p×q, j(n)=(p-1)×(q-1)3. 选择整数 e 使 (j(n),e)原创 2021-01-26 18:10:56 · 973 阅读 · 0 评论 -
3.7 模式选用和比较
选用:ECB模式:简单、高速,但最弱、易受重发攻击,一般不推荐。CBC适用于文件加密,但较ECB慢。安全性加强。OFB和CFB较CBC慢许多。每次迭代只有少数bit完成加密。若可以容忍少量错误扩展,此时用CFB。在字符为单元的流密码中多选CFB模式。OFB用于高速同步系统,没有错误传播。CTR适用于对实时性和速度要求比较高的场合。比较:图3.7.1 五种模式比较图...原创 2021-01-26 18:07:09 · 180 阅读 · 0 评论 -
3.6 DES-CTR
a)简介CTR模式使用与明文分组相同的计数器长度,但加密不同的分组所用的计数器值必须不同。典型地:计数器从某一初值开始,依次递增1。计数器值经加密函数变换的结果再与明文分组异或,从而得到密文。解密时使用相同的计数器值序列,用加密函数变换后的计数器值与密文分组异或,从而恢复明文。b)算法流程加密:ci= mi E_k (CTR+i) (i=1, 2, …, n)解密:mi=ci E_k (CTR+i) (i=1, 2, …, n)其中,CTR表示计数器的初值c)算法实现在3.1的基础原创 2021-01-26 18:06:42 · 888 阅读 · 2 评论 -
3.5 DES-OFB
a)简介输出反馈模式的结构与CFB的结构类似,不同之处在于:OFB模式将加密算法的输出反馈到移位寄存器。b)算法流程加密:解密逆操作。c)算法实现在3.1的基础上实现:加密:图3.5.1 des-ofb 加密解密:图3.5.2 des-ofb 解密d)算法验证在线网站:图3.5.3 des-ofb 在线网站结果验证:图3.5.4 des-ofb 验证e)算法分析OFB模式具有普通序列密码的优缺点:可加密任意长度的数据(即不需要进行分组填充),没有错误传播,适于加密原创 2021-01-26 18:05:42 · 561 阅读 · 0 评论 -
3.4 DES-CFB
a)简介CFB模式全称是Cipher FeedBack模式(密文反馈模式),在CFB模式中,前一个密文分组被送回到密码算法的输入端。b)算法流程加密:输入是64比特的移位寄存器,其初值为初始向量IV输出最左边j比特与明文第一个单元P1进行异或,产生密文的第1个单元C1。然后将移位寄存器左移j位,并将C1送入移位寄存器的最右边j位(最低有效位),直至明文所有单元被加密CFB实际上是将加密算法作为一个密钥流产生器,j=1时就退化为流密码c)算法实现在3.1的基础上实现:加密:图3.4.1 d原创 2021-01-26 18:04:08 · 1010 阅读 · 0 评论 -
3.3 DES-CBC
a)简介CBC模式的全称是:Cipher Block Chaining模式(密文分组链接模式),在CBC模式中,首先将明文分组与前一个密文分组进行异或运算,然后再进行加密。b)算法流程加密输入是当前明文分组和前一密文分组的异或,形成一条链加密:c1=Ek(m1 IV), ci=Ek (m_i ci-1) i=2, 3, 4, …, N解密:m1=D_k (c_1) IV, mi=D_k (c_i) ci-1 ,i=2, 3, 4,…, Nc)算法实现在3.1的基础上实现:加原创 2021-01-26 18:03:10 · 388 阅读 · 0 评论 -
3.2 DES-ECB
a)简介ECB模式的全称是:Electronic CodeBook,也称之为电子密码本模式,将明文分组加密之后的结果称之为密文分组ECB模式是所有模式中最简单的一种,明文分组和密文分组是一一对应的关系,明文分组中存在多个相同的明文分组,则这些明文分组最终被转换为相同的密文分组,只要观察一下密文,就可以知道明文中存在怎样的一个组合,ECB模式存在一定风险。b)算法流程直接用分组密码算法来进行消息的加密和解密一个明文分组被加密成一个密文分组,相同的明文分组加密成相同的密文分组明文分成64(根据算法确原创 2021-01-26 18:01:11 · 274 阅读 · 0 评论 -
3.1 DES
a)简介DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。需要注意的是,在某些文献中,作为算法的DES称为数据加密算法(Data Encryption Algorithm,DEA),已与作为标准的DES区分开来。b)算法流程DES的整个操作可以分为三部分:1)初始置换和逆初始置换初始置换是在第一轮迭代之前进行的原创 2021-01-26 17:58:29 · 2135 阅读 · 2 评论 -
2.3 A5
a)简介A5算法已被应用于GSM通信系统中,用于加密从手机到基站的连接,以保护语音通信。一个GSM语言消息被转换成一系列的帧,每帧长228位,每帧用A5进行加密b)算法流程A5算法主要由三个长度不同的线性移位寄存器组成,即A, B, C。其中A有19位,B有22位,C有23位移位由时钟控制的,且遵循“择多”的原则。即从每个寄存器中取出一个中间位,三个数中占多数的寄存器参加移位,其余的不移位。比如取出的三个中间位中有两个为“1”,则为“1”的寄存器进行一次移位,为“0”的不移。反过来,若三个中间位中原创 2021-01-25 18:17:49 · 222 阅读 · 0 评论 -
2.2 RC4
a)简介RC4是一个典型的基于非线性数组变换的序列密码。它以一个足够大的数组为基础,对其进行非线性变换,产生非线性的密钥流序列。b)算法流程根据种子密钥,利用密钥调度算法对数据表S进行重新排列1.初始化。2.密钥填充。3.初始变换加密时,将k的值与明文字节异或;解密时,将k的值与密文字节异或c)算法实现快速幂:图2.2.1 RC4 快速幂实现主代码实现:图2.2.2 RC4 主代码实现d)算法验证在线网站结果:图2.2.3 RC4 在线网站结果验证:图2.2.3 R原创 2021-01-25 18:16:58 · 152 阅读 · 0 评论 -
2.1 LFSR
a)简介线性反馈移位寄存器(linear feedback shift register, LFSR)是指,给定前一状态的输出,将该输出的线性函数再用作输入的移位寄存器。异或运算是最常见的单比特线性函数:对寄存器的某些位进行异或操作后作为输入,再对寄存器中的各比特进行整体移位。b)算法流程根据初始状态和反馈函数获得输出值,整体移位,用获得的输出值填充。如:c)算法实现图2.1.1 LFSR实现d)算法验证本原多项式的周期为2^n-1。选取16项本原多项式,得出的周期应为65535。图原创 2021-01-25 18:15:31 · 1966 阅读 · 2 评论 -
1.5 HILL加密
a)简介希尔密码是利用矩阵进行加密的一种加密算法,其本质是一种多表代换密码。b)算法流程基本思想:将n个明文字母通过线性变换,将它们转换为n个密文字母。解密只需做一次逆变换即可算法的密钥K=﹛Z_26 上的n×n可逆矩阵﹜,明文M与密文C 均为n维向量,加密和解密变换分别为:C=K∙M mod 26 M=K^(-1)∙C mod 26K^(-1) 为K在模26上的逆矩阵,满足KK(-1)=K(-1) K=I (mod 26)I 为单位矩阵c)算法实现加密:图原创 2021-01-25 16:56:13 · 1762 阅读 · 0 评论 -
1.4 ADFGX
a)简介第一次世界大战:德军采用由A、D、F、G、X五个字母拼成全新密码加密的电报。属于置换替代技术密码类型,ADFGVX密码是德军在第一次世界大战中使用的栏块密码。事实上,它是早先一种密码 ADFGX 的增补版。1918年3月Fritz Nebel上校发明了这种密码,并提倡使用。它结合了改良过的Polybius方格替代密码与单行换位密码。这个密码以使用于密文当中六个字母 A, D, F, G, V, X命名。ADFGVX 是被法国陆军中尉 Georges Painvin 所破解的。b)算法流程第一步原创 2021-01-25 16:55:19 · 4636 阅读 · 2 评论 -
1.3 PLAYFAIR
a)简介普莱费尔密码(英文:Playfair cipher 或 Playfair square)是一种使用一个关键词方格来加密字符对的加密法,1854年由一位名叫查尔斯·惠斯通(Charles Wheatstone)的英国人发明。b)算法流程思想:双字母转换。密钥:5×5矩阵(由一个关键词构造):比如FIVESTARS,将单词中重复的字母去掉,可以得到FIVESTAR,将剩下的字母排列成5×5矩阵的起始部分,矩阵的剩余部分则用26个字母表中未出现的字母顺序填充,I和J作为一个字母来对待。对每一对原创 2021-01-25 16:53:44 · 805 阅读 · 0 评论 -
1.2维吉尼亚密码
a)简介维吉尼亚密码(又译维热纳尔密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。b)算法流程加密过程:明文字母p对应的列和密钥字母对应的行的交叉点,就是加密后的密文字母c。解密过程:在密钥字母k对应的行,找到相应的密文字母c,则c所在列对应的明文字母即为p。图1.2.1 维吉尼亚矩阵c)算法实现加密:图1.2.2 维吉尼亚加密解密:图1.2.3 维吉尼亚解密d)算法验证课件上的样例:图1.2.4 维吉尼亚样例验证:图1.2.5 维吉尼原创 2021-01-25 16:51:59 · 2014 阅读 · 0 评论 -
1.1仿射密码
a)简介仿射密码为单表加密的一种,字母系统中所有字母都由一简单数学方程加密,对应至数值,或转回字母。b)算法流程选取k1,k2两个参数,其中gcd(k1,26)=1加密:C= k1m+k2 mod 26解密:m= (C-k2)〖k1〗^(-1) mod 26c)算法实现加密:图1.1.1 仿射密码加密求逆元:图1.1.2 求逆元解密:图1.1.3 仿射密码解密d)算法验证选取课件上的例子:图1.1.4 仿射密码样例验证:图1.1.5 仿射密码验证e)算法破解单原创 2021-01-25 16:49:18 · 797 阅读 · 1 评论