专栏首页java一日一条DES/3DES/AES 三种对称加密算法在 Java 中的实现

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

有两句话是这么说的:

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

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

1.对称密码算法

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

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

(1)加解密通信模型

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

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

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

(4)分组密码工作模式

  • 1)ECB:电子密码本(最常用的,每次加密均产生独立的密文分组,并且对其他的密文分组不会产生影响,也就是相同的明文加密后产生相同的密文)
  • 2)CBC:密文链接(常用的,明文加密前需要先和前面的密文进行异或运算,也就是相同的明文加密后产生不同的密文)
  • 3)CFB:密文反馈
  • 4)OFB:输出反馈
  • 5)CTR:计数器

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

6.分组密码填充方式

  • 1)NoPadding:无填充
  • 2)PKCS5Padding:
  • 3)ISO10126Padding:

7.常用对称密码:

  • 1)DES(Data Encryption Standard,数据加密标准)
  • 2)3DES(Triple DES、DESede,进行了三重DES加密的算法)
  • 3)AES(Advanced Encryption Standard,高级数据加密标准,AES算法可以有效抵制针对DES的攻击算法)

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

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

2.DES算法

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

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

3.Java实现

1)生成密钥

2)加密

3)解密

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

3.3DES算法

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

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

3.Java实现

1)生成密钥

2)3DES加密

3)3DES解密

4.AES算法(推荐使用)

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

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

3.Java实现

1)生成密钥

2)AES加密

3)AES解密

为了方便使用,我对DES / 3DES / AES 三种算法进行了工具类编写,地址: https://github.com/smartbetter/AndroidUtilsLibrary(新增DES/3DES/AES工具类)。

本文分享自微信公众号 - java一日一条(mjx_java),作者:收听我

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-02-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 最详细的 HTTPS 科普扫盲帖

    HTTP是明文传输的,也就意味着,介于发送端、接收端中间的任意节点都可以知道你们传输的内容是什么。这些节点可能是路由器、代理等。

    哲洛不闹
  • 要不要打脸select *

    特别有意思,昨天发了一篇关于数据库sql的文章,其中有一个关于select * 的讲解:

    哲洛不闹
  • Java:过去、未来的互联网编程之王

    Java对你而言是什么?一门你大学里学过的语言?一个IT行业的通用语言?你相信Java已经为下一次互联网爆炸做好了准备么?Java 一方面为嵌入式计算做了增强,...

    哲洛不闹
  • 常见加密算法解析-2

    DES是对称性加密里常见的一种,全程是Data Encryption Standard,即数据加密标准,是一种使用秘钥加密的块算法。秘钥长度是64位(bit),...

    用户5521279
  • Python最常见的加密方式和python实现(内含网址链接和全套资料)

    我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。

    汤贤
  • DES算法

    DES全称叫(Data Encryption Standard), 是1977年美国联邦信息处理标准(FIPS)中所采用的一种对称加密算法。

    程序那些事
  • 企业面试题: http 和 https 协议 有何区别及如何使用

    http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。

    舒克
  • 【tensorflow2.0】高阶api--主要为tf.keras.models提供的模型的类接口

    TensorFlow的高阶API主要为tf.keras.models提供的模型的类接口。

    绝命生
  • Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Alfred Zhao
  • [SEO知识讲解] 搜索引擎是怎么判断一个网站是否作弊的?

         作弊行为是层出不穷,搜索引擎蜘蛛也是越来聪明。(错杀一千,不放一个)在2017年9月底开始,百度蜘蛛对新站的考核期是一再延长,为什么这么说呢?就是10...

    AlexTao

扫码关注云+社区

领取腾讯云代金券