一、简单介绍
“密码”或“加密系统”用于“加密”数据。对于原始的未加密的数据,我们称之为“明文”。对于加密的结果,我们称之为“密文”。通过称为“解密”的过程,我们把密文恢复成原始的明文。
古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。古典密码学的两种加密思路如下:
1.替换密码
简单替换密码加密是通过将当前字母替换为在常规字母表中第n个位置之后的那个字母来完成的。较复杂的替换密码是为字母表建立映射关系,由此可以产生更大的密钥空间。
2.换位密码
换位密码不对任何明文内容进行替换,而是通过换位(打乱顺序)的方法进行加密。典型的换位密码是双换位密码,这种加密方案首先要将明文写在一个给定大小的矩阵中,然后对行和列依据特定的序列进行置换操作。
混淆(confusion):
使密文与密钥的关系尽可能复杂化,使得对手即使获取了许多明文和对应的密文,以及关于密文的一些统计特性,也无法推测密钥。
扩散(diffusion):
让明文中的每一位影响密文中的许多位,或者说让密文中的每一位受明文中的许多位的影响。这样可以隐蔽明文的统计特性。当然,理想的情况是让明文中的每一位影响密文中的所有位,或者说让密文中的每一位受明文中所有位的影响。
分组密码:
可以看成经典的电 密码本加密技术的现代传承,其中由密钥来决定电 密码本的选择。一次加密一组数据,密钥长度为一组数据的长度。
DES加密:
DES加密是三大著名且经典的加密算法之一,为分组对称加密算法。DES算法(或国产等效算法)在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人的PIN的加密传输,IC卡与POS间的双向认证、金融交易数据包的MAC(消息鉴别码Message Authentication Code)校验等。
DES(Data Encryption Standard)是分组对称密码算法。DES采用了64位的分组长度和56位的密钥长度,它将64位的输入经过一系列变换得到64位的输出。解密则使用了相同的步骤和相同的密钥。参与加密的长度为56位,密钥空间含有2^56个密钥。
DES算法利用多次组合替代算法和换位算法,分散和错乱的相互作用,把明文编制成密码强度很高的密文,它的加密和解密用的是同一算法。
DES算法是一种分组加密机制,将明文分成N个组,然后对各个组进行加密,形成各自的密文,最后把所有的分组密文进行合并,形成最终的密文。
3DES算法:
3DES即三重数据加密算法,相当于是对每个数据块应用三次DES加密。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击。
3DES使用3个密钥,对明文先使用key1进行des加密形成密文1,接着使用key2对密文1进行解密形成密文2,最后使用key3对密文2进行加密形成密文3。即:密文=EK3(DK2(EK1(明文))),明文=DK1(EK2(DK3(密文)))。
3DES标准定义了三种密钥选项:密钥选项1:三个密钥是独立的。密钥选项2:K1和K2是独立的,而K3=K1密钥选项3:三个密钥均相等,即K1=K2=K3密钥选项1的强度最高,拥有3 x 56 = 168个独立的密钥位。密钥选项2的安全性稍低,拥有2 x 56 = 112个独立的密钥位。该选项比简单的应用DES两次的强度较高,即使用K1和K2,因为它可以防御中途相遇攻击(英语:meet-in-the-middle attack)。密钥选项3:等同于DES,只有56个密钥位。这个选项提供了与DES的兼容性,因为第1和第2次DES操作相互抵消了。该选项不再为国家标准科技协会(NIST)所建议,亦不为ISO/IEC 18033-3所支持。
MD5算法:
英文名:Message Digest Algorithm V5。 中文名:消息摘要算法第五版。
算法的输入:任何长度的字节流。 算法的输出:16字节值(有时会以32位十六进制字符表示)。
算法特点:加密过程不需要密钥,加密后的数据无法被解密。只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。所以不存在密钥的管理与分发问题。
算法流程:相当复杂。 算法应用:文件一致性验证、数字证书、访问认证。
RSA算法的理论基础:
大素数乘积的因子分解问题,即将两个大素数相乘十分容易,但对其乘积进行因式分解却极其困难,因此可以将乘积作为加密密钥公开(由素数、模运算、费马小定理、欧拉定理、扩展欧几里得算法可进行推导)。
RSA算法流程:
密钥生成方法
1、随机生成两个大的质数p和q,p不等于q,计算N=pq。
2、根据欧拉函数,不大于N且与N互质的整数个数为(p-1)(q-1)。
3、任意选定一个整数e(e不是必须为质数),要求e与(p-1)(q-1)互质,且e小于(p-1)(q-1)。
4、通过公式d×e ≡ 1 (mod (p-1)(q-1))来计算d。
5、将p和q销毁。
6、此时,(N,e)作为公钥使用,(N,d)作为私钥使用。
密钥使用方法
1、接收方在本地生成一对公钥(N,e)和私钥(N,d)。
2、接收方将公钥(N,e)发布到公共空间中,自己留存私钥(N,d)。
3、想要给接收方发送数据的人通过公钥加密数据。
4、接收方收到加密数据后通过私钥解密。
加密方法
1、将消息分组,每组分别加密(即分组加密)。
2、每组消息用以下公式计算:
其中:n为明文,e和N为公钥,余数c为密文。
3、将多组密文组织到一起即形成加密的消息。
解密方法
1、接收方收到加密消息后,将密文分组。
2、每组用以下公式来解码:
其中:c为密文,d和N为私钥,余数n为明文。
3、将每一组明文拼合,得到最终的消息。
实训任务1 古典密码学
程序部分:
1.必答 (简答题) 密文“yvccfnficu”的解密结果是/p>
答:helloworld(在该图的最后一行)
2.必答 (简答题) 用栅栏密码程序恢复密文“hloodelwr”。
答:helloworld
解密部分:
1.必答 (简答题) 解密”由人俱乙口一中”和”大中口由人由工”,两段密文的解密结果相同
答:5201314 第一个解密的方法为字的笔画数,第二个解密的方法为字笔画的出头数
2.必答 (简答题) 佛曰:諳摩呐若死漫哆蘇菩世梵智藝梵楞梵多梵夷冥數罰不一智提爍梵漫漫罰知冥槃僧奢心哆利皤切缽伊諳姪藝哆諦呐室智怯神怯瑟侄醯呐涅哆倒侄醯奢麼穆奢集般夢依侄神梵度亦三心滅楞逝諳無顛諳離諳。冥智恐死即者怯所不離。
答:iloveyou
3.必答(简答题)
YmJhYWFhYmJiYWJhYmFhYWFhYWFiYWFhYmFhYmFhYWFiYmFiYWFhYmFhYmFhYWFhYWFiYWFiYg==
答:youaregreat
4.(简答题) 湛老师使用混合密码.cpp中的代码生成了密文exkukgamzgx,请阅读代码,编写程序或采用其他方法进行破解,得到明文。(选做)
答:youaregreat
实训任务2 对称加密算法
DES加密算法
1.必答 (简答题) 利用DES Tool对文本信息进行加密和解密,结果截图
2.必答 (简答题) 利用DES Tool对文件进行加密和解密,结果截图
3.必答 (简答题) 调试DES.cpp中的代码,分别对明文和轻度修改的明文进行加密,观察两个结果的差别
4.必答 (简答题) 对重复字符进行加密,观察DES加密的分组长度
3DES加密算法
1.必答 (简答题) 打开DES Tool软件,点选“使用3DES”,输入密钥1和密钥2和明文,进行3DES加密,得到密文,记录下明文、密钥1、密钥2和密文。
2.必答 (简答题) 取消点选“使用3DES”,用密钥1解密密文得到明文1,记录下明文1。
3.必答 (简答题) 利用密钥2加密明文1得到密文1,记录下密文1。
4.必答 (简答题) 利用密钥1解密密文1,得到明文。比较得到的明文和之前直接使用3DES加密的明文是否相同,体会3DES的原理和使用方法。
消息摘要算法(MD5)
1.必答 (简答题) 运行Hash Tool.exe,计算实训指导书的MD5值并记录。
2.必答 (简答题) 轻微修改实训指导书,如:加一个空格,再次计算MD5值。比较两次计算出的MD5值,观察结果。
3.必答 (简答题) 利用www.cmd5.com或www.somd5.com等 站解密常见口令的MD5值,例如21232f297a57a5a743894a0e4a801fc3 ;e10adc3949ba59abbe56e057f20f883e; 5f4dcc3b5aa765d61d8327deb882cf99
4.必答 (简答题) 在MD5.cpp中编写程序,模拟系统口令设置与验证程序,要求对口令进行MD5加密后保存,再次登陆时进行验证,截代码和运行结果图。
5.必答 (简答题) 继续编写程序,分别采用拼接字串和嵌套两层MD5计算的方式为用户口令加盐,增强MD5的保密性,防止“碰撞”。在解密 站中对加盐的MD5进行解密,观察是否能成功解密
实训任务3 公钥加密算法
RSA算法的数学原理
1.必答 (简答题) 调试运行RSA.cpp,选择两个不同的素数。
2.必答 (简答题) 根据生成的d和e验证公式d×e ≡ 1 (mod (p-1)(q-1))
3.必答 (简答题) 验证密钥是否有效(加密解密的计算过程和结果是否正确)
答:根据(e·d) mod (p-1)(q-1)=1
利用RSA-Tool加密消息
1.必答 (简答题) 运行RSA-Tool,点击Start按钮,滑动鼠标生成一个随机数。点击Generate生成一对大质数p、q及N=p×q。
2.必答 (简答题) 自己选定一个可用的整数e。点击Calc.D生成d。
3.必答 (简答题) 将公钥(N,e)发送给小伙伴,小伙伴利用该公钥进行消息加密并发回密文。利用私钥对小伙伴发来的密文进行解密。(可打开两个窗口进行操作)
注:加密时仅需要e和N,解密时仅需要d和N。
利用RSA算法实现对称密钥的安全分配
1.必答 (简答题) 小A同学准备一些文字(信件),选择一个密钥利用DES-Tool对文字进行加密得到密文1。
2.必答 (简答题) 小B同学运行RSA-Tool,生成公钥和私钥,将公钥发送给小A同学,私钥自己留存。
3.必答 (简答题) 小A同学利用小B同学的公钥对加密信件时使用的对称密钥进行加密,得到密文2。将密文1和密文2一同发送给小B同学。
4.必答 (简答题) 小B同学首先用自己的私钥解密密文2,接着利用解密密文2得到的对称密钥在DES-Tool中解密密文1,得到原始文字内容。
利用RSA算法生成数字签名
1.必答 (简答题) 小A同学运行Hash-Tool,生成某文件的MD5值。
2.必答 (简答题) 小A同学利用RSA Tool对生成的MD5值进行私钥加密(反向使用RSA算法,Generate生成密钥后将D和E交换位置,再用test进行加密)。
3.必答 (简答题) 小A同学将公钥、文件和加密后的MD5一起发送给小B同学,由小B同学验证数字签名的正确性(软件中先激活test按钮,再填写公钥进行解密)。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!