Java 对称加密几种算法分别实现

发布时间 - 2026-01-10 22:19:36    点击率:

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

有两句话是这么说的:

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 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 三种算法实现 对称加密:

2.DES算法

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

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

3.Java实现

1)生成密钥

KeyGenerator keyGen = KeyGenerator.getInstance("DES");//密钥生成器
keyGen.init(56);//初始化密钥生成器
SecretKey secretKey = keyGen.generateKey();//生成密钥
byte[] key = secretKey.getEncoded();//密钥字节数组

2)加密

SecretKey secretKey = new SecretKeySpec(key, "DES");//恢复密钥
Cipher cipher = Cipher.getInstance("DES");//Cipher完成加密或解密工作类
cipher.init(Cipher.ENCRYPT_MODE, secretKey);//对Cipher初始化,加密模式
byte[] cipherByte = cipher.doFinal(data);//加密data

3)解密

SecretKey secretKey = new SecretKeySpec(key, "DES");//恢复密钥
Cipher cipher = Cipher.getInstance("DES");//Cipher完成加密或解密工作类
cipher.init(Cipher.DECRYPT_MODE, secretKey);//对Cipher初始化,解密模式
byte[] cipherByte = cipher.doFinal(data);//解密data

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

3.3DES算法

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

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

3.Java实现

1)生成密钥

KeyGenerator keyGen = KeyGenerator.getInstance("DESede");//密钥生成器
keyGen.init(168); //可指定密钥长度为112或168,默认为168  
SecretKey secretKey = keyGen.generateKey();//生成密钥
byte[] key = secretKey.getEncoded();//密钥字节数组

2)3DES加密

SecretKey secretKey = new SecretKeySpec(key, "DESede");//恢复密钥
Cipher cipher = Cipher.getInstance("DESede");//Cipher完成加密或解密工作类
cipher.init(Cipher.ENCRYPT_MODE, secretKey);//对Cipher初始化,解密模式
byte[] cipherByte = cipher.doFinal(data);//加密data

3)3DES解密

SecretKey secretKey = new SecretKeySpec(key, "DESede");//恢复密钥
Cipher cipher = Cipher.getInstance("DESede");//Cipher完成加密或解密工作类
cipher.init(Cipher.DECRYPT_MODE, secretKey);//对Cipher初始化,解密模式
byte[] cipherByte = cipher.doFinal(data);//解密data

4.AES算法(推荐使用)

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

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

3.Java实现

1)生成密钥

KeyGenerator keyGen = KeyGenerator.getInstance("AES");//密钥生成器
keygen.init(128); //默认128,获得无政策权限后可为192或256
SecretKey secretKey = keyGen.generateKey();//生成密钥
byte[] key = secretKey.getEncoded();//密钥字节数组

2)AES加密

SecretKey secretKey = new SecretKeySpec(key, "AES");//恢复密钥
Cipher cipher = Cipher.getInstance("AES");//Cipher完成加密或解密工作类
cipher.init(Cipher.ENCRYPT_MODE, secretKey);//对Cipher初始化,解密模式
byte[] cipherByte = cipher.doFinal(data);//加密data

3)AES解密

SecretKey secretKey = new SecretKeySpec(key, "AES");//恢复密钥
Cipher cipher = Cipher.getInstance("AES");//Cipher完成加密或解密工作类
cipher.init(Cipher.DECRYPT_MODE, secretKey);//对Cipher初始化,解密模式
byte[] cipherByte = cipher.doFinal(data);//解密data

为了方便使用,我对DES / 3DES / AES 三种算法进行了工具类编写,

地址:http://xiazai./201701/yuanma/Android-UtilsLibrary-master().rar(新增DES/3DES/AES工具类)。

到此,DES / 3DES / AES 三种算法实现 对称加密 就说完了.

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java  # 对称加密  # 对称加密DES  # /  # 3DES  # AES  # 算法  # DES  # 对称加密实现  # 分享Java常用几种加密算法(四种)  # java异或加密算法  # 基于java实现的ECC加密算法示例  # java加密算法分享(rsa解密、对称加密、md5加密)  # 教你用Java实现RSA非对称加密算法  # java实现的RSA加密算法详解  # Java常用加密算法实例总结  # java常见的五种加密算法使用方法举例  # 数据结构  # 三种  # 进行了  # 这三种  # 的是  # 加解密  # 我说  # 两种  # 我对  # 很有  # 一切都  # 推荐使用  # 我们可以  # 也很  # 对其  # 就把  # 希望能  # 不高  # 我给  # 掉了 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 青岛网站建设如何选择本地服务器?  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  百度浏览器如何管理插件 百度浏览器插件管理方法  iOS正则表达式验证手机号、邮箱、身份证号等  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  如何挑选高效建站主机与优质域名?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  如何在Windows服务器上快速搭建网站?  详解jQuery停止动画——stop()方法的使用  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  🚀拖拽式CMS建站能否实现高效与个性化并存?  如何正确选择百度移动适配建站域名?  中国移动官方网站首页入口 中国移动官网网页登录  jquery插件bootstrapValidator表单验证详解  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  Laravel如何使用Vite进行前端资源打包?(配置示例)  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  Laravel如何与Inertia.js和Vue/React构建现代单页应用  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  如何选择PHP开源工具快速搭建网站?  网站制作报价单模板图片,小松挖机官方网站报价?  详解vue.js组件化开发实践  网站制作软件有哪些,制图软件有哪些?  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  如何用腾讯建站主机快速创建免费网站?  大同网页,大同瑞慈医院官网?  如何续费美橙建站之星域名及服务?  jQuery中的100个技巧汇总  如何确保FTP站点访问权限与数据传输安全?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  网站制作价目表怎么做,珍爱网婚介费用多少?  北京网站制作公司哪家好一点,北京租房网站有哪些?  Swift开发中switch语句值绑定模式  如何快速搭建个人网站并优化SEO?  智能起名网站制作软件有哪些,制作logo的软件?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  Linux后台任务运行方法_nohup与&使用技巧【技巧】  深圳网站制作培训,深圳哪些招聘网站比较好?  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  如何在阿里云购买域名并搭建网站?  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  在centOS 7安装mysql 5.7的详细教程  Internet Explorer官网直接进入 IE浏览器在线体验版网址  JavaScript模板引擎Template.js使用详解