Day2 学习了一些加密算法,如下:
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位十六进制字符表示)。
算法特点:加密过程不需要密钥,加密后的数据无法被解密。只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。所以不存在密钥的管理与分发问题。
古典解密算法一些有趣的解密小题目:
1、"由人俱乙口一中"和"大中口由人由工"具有相同的含义。
解密:采用 当铺密码 ,第一种解密为字的笔画数,第二种解密为字笔画的出头数,即“5 2 0 1 3 1 4”
2、佛曰:諳摩呐若死漫哆蘇菩世梵智藝梵楞梵多梵夷冥數罰不一智提爍梵漫漫罰知冥槃僧奢心哆利皤切缽伊諳姪藝哆諦呐室智怯神怯瑟侄醯呐涅哆倒侄醯奢麼穆奢集般夢依侄神梵度亦三心滅楞逝諳無顛諳離諳。冥智恐死即者怯所不離。
解密:采用 与佛论禅 与 摩斯电码相结合的解密算法,解密为“ILOVEYOU”
3、YmJhYWFhYmJiYWJhYmFhYWFhYWFiYWFhYmFhYmFhYWFiYmFiYWFhYmFhYmFhYWFhYWFiYWFiYg==
解密:采用 base64 与 培根密码相结合的解密算法,其中 base64 密文的特点为结尾带==。解密为“you are great”
DES加密算法
- 和小伙伴约定一个密钥。
- 打开DES Tool,使用约定好的密钥对明文加密。
- 将密文发送给小伙伴,由小伙伴进行解密,读取明文信息。
- 使用DES Tool设置密钥对实验指导书进行加密,观察加密后的效果。
- 使用DES Tool解密加密后的实验指导书,观察是否正确还原了文件。
- 阅读DES.cpp中的代码,了解DES算法的设计思路。
- 调试运行DES.cpp,输入明文进行加密,观察加密结果。
- 轻微修改明文,观察加密结果与之前的变化。
- 输入字符重复但长度不同的明文,观察加密结果,体会分组加密的特点。
DES加密算法采用分组加密机制,如果输入一串相同字符来看看:
可以看到密文有循环出现,而一组中位数不够会自动补0来进行加密。
3DES加密算法
- 打开DES Tool软件,点选“使用3DES”,设置密钥1和密钥2并记录下来。
- 输入明文,进行3DES加密,得到密文,记录密文。
- 取消点选“使用3DES”,用密钥1解密密文得到明文1,记录下明文1。
- 利用密钥2加密明文1得到密文1,记录下密文1。
- 利用密钥1解密密文1,得到明文。
- 比较得到的明文和原始明文是否相同,体会3DES的用法。
3DES加密算法规则:密文=EK3(DK2(EK1(明文))),明文=DK1(EK2(DK3(密文)))
其中D为解密,E为加密,K为密钥,1,2为密钥下标。
消息摘要算法
- 运行Hash Tool.exe,计算实验指导书的MD5值并记录。
- 轻微修改实验指导书,如:加一个空格,再次计算MD5值。
- 将两次的MD5值进行比较,观察结果。
- 阅读MD5.cpp中的代码,了解MD5算法的设计思路。
- 运行MD5.cpp,计算一些常见口令的MD5值,在www.cmd5.com或www.somd5.com等网站进行在线破解,观察哪些口令能够破解成功。
- 在MD5.cpp中编写程序,模拟系统口令设置与验证程序,要求对口令进行MD5加密后保存,再次登陆时进行验证。
- 继续编写程序,分别采用拼接字串和嵌套两层MD5计算的方式为用户口令加盐,增强MD5的保密性,防止“碰撞”。