JAVA实现AES加密
1. 因子
上次介绍了
《JAVA实现AES加密》,中间提到近些年DES使用越来越少,原因就在于其使用56位密钥,比较容易被破解,近些年来逐渐被AES替代,AES已经变成目前对称加密中最流行算法之一;AES可以使用128、192、和256位密钥,并且用128位分组加密和解密数据。本文就简单介绍如何通过JAVA实现AES加密。
2. JAVA实现
闲话少许,掠过AES加密原理及算法,关于这些直接搜索专业网站吧,我们直接看JAVA的具体实现。
2.1 加密
代码有详细解释,不多废话。
2.2 解密
代码有详细注释,不多废话
注意:解密的时候要传入byte数组
2.3 测试代码
输出结果如下:
加密前:test
解密后:test
2.4 容易出错的地方
但是如果我们将测试代码修改一下,如下:
则,系统会报出如下异常:
javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
这主要是因为加密后的byte数组是不能强制转换成字符串的,换言之:字符串和byte数组在这种情况下不是互逆的;要避免这种情况,我们需要做一些修订,可以考虑将二进制数据转换成十六进制表示,主要有如下两个方法:
2.4.1将二进制转换成16进制
2.4.2 将16进制转换为二进制
然后,我们再修订以上测试代码,如下:
测试结果如下:
加密前:test
加密后:73C58BAFE578C59366D8C995CD0B9D6D
解密后:test
2.5 另外一种加密方式
还有一种加密方式,大家可以参考如下:
这种加密方式有两种限制
- 密钥必须是16位的
- 待加密内容的长度必须是16的倍数,如果不是16的倍数,就会出如下异常:
javax.crypto.IllegalBlockSizeException: Input length not multiple of 16 bytes
at com.sun.crypto.provider.SunJCE_f.a(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
要解决如上异常,可以通过补全传入加密内容等方式进行避免。
帮朋友宣传:
新淘网依赖淘宝TOP平台的API,封装了多种酷炫组件,面向广大淘客提供免费建站推广功能,目前已经入住淘宝箱,正式对外运营,欢迎各位围观。
分享到:
相关推荐
java实现aes加解密
本文就简单介绍如何通过JAVA实现AES加密: /** * 测试AES加密和解密 * @param args */ public static void main(String[] args) { /**数据初始化**/ String content = "http://www.mbaike.net"; String...
Java实现AES加密算法Java实现AES加密算法
1.采用秘钥为16位长度的加密字符 2.加密算法为AES/ECB/PKCS5Padding 3.解决加解密乱码问题 4.完整的线上可运行代码及各方法及步骤注释 5.无任何插件,java环境直接运行
JAVA实现AES加密算法代码.doc
主要介绍了java使用Hex编码解码实现Aes加密解密功能,结合完整实例形式分析了Aes加密解密功能的定义与使用方法,需要的朋友可以参考下
Java AES加密Java AES加密Java AES加密Java AES加密Java AES加密Java AES加密Java AES加密
AES高级加密标准,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种...本软件是用java语言开发,实现了AES算法对文件的加密和解密,并在界面上加了进度条,来提示用户加密解密的进度。如果不足之处,欢迎留言。
采用固定AES密钥加密,AES使用PKCS5规则进行补位,加密模式使用AES-ECB
使用JAVA实现的AES算法,代码通俗易懂,方便初学者对AES进行研究与学习
主要介绍了Java实现AES加密算法的简单示例分享,AES算法是基于对密码值的置换和替代,需要的朋友可以参考下
NULL 博文链接:https://ping2010.iteye.com/blog/1571524
本案例使用springboot进行快速构建项目,AES进行对称加密及解密
在工作中会经常遇到密码加密,URL传参要进行加密,在此我参照一个例子将用java实现的AES加解密程序用实例写出。JS实现AES-GCM加密,java实现AES-GCM解密
java代码-java使用AES加密解密 AES-128-ECB加密 ——学习参考资料:仅用于个人学习使用
java实现aes加密,采用cbc模式,PKCS5Padding填充,key ALLINPAYRISKERR0,偏移量IV 0000000000000000,hex输出 。
Delphi实现AES加密和解密, 同Java加解密兼容
AES加密算法的JAVA实现(只有加密)
java 基于AES实现对文件的加密 解密 有问题 www.willvc.com.cn 能联系到我
压缩包里有两个工程,一个vc6.0一个myeclipse,本帖是修复贴,原帖地址c/c++ 与java互通 AES加密解密,算法ECB/PKCS5PADDING http://download.csdn.net/download/wangsonghiweed/4328267 -来自CSDN,有童鞋反映有...