对称加密方案学习 DES / 3DES / AES

Posted 鸿洋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对称加密方案学习 DES / 3DES / AES相关的知识,希望对你有一定的参考价值。

每日推荐


非常棒的一个TodoList,动画效果非常nice。



https://github.com/Yalantis/ToDoList


本文作者信息


本文由郭朝投稿。

http://blog.csdn.net/smartbetter


本文主要来介绍一些加密算法的Java实现,不涉及原理。


1
概述


有两句话是这么说的: 


1)算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了。 

2)编程就是算法和数据结构,算法和数据结构是编程的灵魂。

 
注意,这可不是我说的,是无数程序员总结的,话说的很实在也很精辟,若想长久可持续发展,多研究算法还是很有必要的,今天我给大家说说加密算法中的对称加密算法,并且这里将教会大家对称加密算法的编程使用。包含DES、3DES和AES三种对称加密算法的编程使用,干货满满。


2

对称密码算法


对称密码算法是当今应用范围最广,使用频率最高的加密算法。它不仅应用于软件行业,在硬件行业同样流行。各种基础设施凡是涉及到安全需求,都会优先考虑对称加密算法。


对称密码算法的加密密钥和解密密钥相同,对于大多数对称密码算法,加解密过程互逆。


加解密通信模型


对称加密方案学习 DES / 3DES / AES

特点:算法公开、计算量小、加密速度快、加密效率高

弱点:双方都使用同样密钥,安全性得不到保证


对称密码有流密码和分组密码两种,但是现在普遍使用的是分组密码:


分组密码工作模式:



  1. ECB:电子密码本(最常用的,每次加密均产生独立的密文分组,并且对其他的密文分组不会产生影响,也就是相同的明文加密后产生相同的密文

  2. CBC:密文链接(常用的,明文加密前需要先和前面的密文进行异或运算,也就是相同的明文加密后产生不同的密文)

  3. CFB:密文反馈

  4. OFB:输出反馈

  5. CTR:计数器


这五种工作模式主要是密码学中算法在进行推导演算的时候所应用到的。


分组密码填充方式:



  1. NoPadding:无填充

  2. PKCS5Padding:

  3. ISO10126Padding:


常用对称密码:


  1. DES(Data Encryption Standard,数据加密标准)

  2. 3DES(Triple DES、DESede,进行了三重DES加密的算法

  3. AES(Advanced Encryption Standard,高级数据加密标准,AES算法可以有效抵制针对DES的攻击算法)


先来看一下这三种算法的简单对比:


算法 密钥长度 默认密钥长度 工作模式 填充方式

DES

56

56

ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128

NoPadding、PKCS5Padding、ISO10126Padding

3DES

112、168

168

ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128

NoPadding、PKCS5Padding、ISO10126Padding

AES

128、192、256

128

ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128

NoPadding、PKCS5Padding、ISO10126Padding


下面我们看如何使用 DES / 3DES / AES 三种算法实现 对称加密:


3

DES算法


1.DES:数据加密标准,是对称加密算法领域中的典型算法 

2.特点:密钥偏短(56位)、生命周期短(避免被破解) 
3.Java实现


1)生成密钥


对称加密方案学习 DES / 3DES / AES


2)加密


对称加密方案学习 DES / 3DES / AES


3)解密


对称加密方案学习 DES / 3DES / AES


我们可以发现,加密解密我们只是设置了不同的模式而已。


4

3DES算法


1.3DES:将密钥长度增至112位或168位,通过增加迭代次数提高安全性 

2.缺点:处理速度较慢、密钥计算时间较长、加密效率不高 
3.Java实现


1)生成密钥


对称加密方案学习 DES / 3DES / AES


2)3DES加密


对称加密方案学习 DES / 3DES / AES


3)3DES解密


对称加密方案学习 DES / 3DES / AES


5

AES算法(推荐使用)


1.AES:高级数据加密标准,能够有效抵御已知的针对DES算法的所有攻击 

2.特点:密钥建立时间短、灵敏性好、内存需求低、安全性高 
3.Java实现


1)生成密钥


对称加密方案学习 DES / 3DES / AES


2)AES加密


对称加密方案学习 DES / 3DES / AES


3)AES解密


对称加密方案学习 DES / 3DES / AES


https://github.com/smartbetter/android-UtilsLibrary 

(新增DES/3DES/AES工具类)。

ZZS

优秀人才不缺工作机会,只缺适合自己的好机会。但是他们往往没有精力从海量机会中找到最适合的那个。

100offer 会对平台上的人才和企业进行严格筛选,让「最好的人才」和「最好的公司」相遇。

扫描下方二维码,注册 100offer,谈谈你对下一份工作的期待。一周内,收到 5-10 个满足你要求的好机会!



如果你有想学习的文章直接留言,我会整理征稿。如果你有好的文章想和大家分享欢迎投稿,直接向我投递文章链接即可。



以上是关于对称加密方案学习 DES / 3DES / AES的主要内容,如果未能解决你的问题,请参考以下文章

go加密算法:CBC对称加密--3DES/AES

DES/3DES/AES 三种对称加密算法在 Java 中的实现

java-信息安全-对称加密算法DES,3DES,AES,Blowfish,RC2,RC4

DES_3DES_AES_IDES_RSA密码算法比较

1、对称加密算法

Java利用DES / 3DES / AES这三种算法分别实现对称加密