主要代码如下:

importjava.security.Security;

importjavax.crypto.Cipher;

importjavax.crypto.spec.SecretKeySpec;

importorg.bouncycastle.jce.provider.BouncyCastleProvider;

publicclassEncrypt {

publicstaticbooleaninitialized =false;

publicstaticfinalString ALGORITHM ="AES/ECB/PKCS7Padding";

/**

* @param  String str  要被加密的字符串

* @param  byte[] key  加/解密要用的长度为32的字节数组(256位)密钥

* @return byte[]  加密后的字节数组

*/

publicstaticbyte[] Aes256Encode(String str,byte[] key){

initialize();

byte[] result =null;

try{

Cipher cipher = Cipher.getInstance(ALGORITHM, "BC");

SecretKeySpec keySpec = newSecretKeySpec(key,"AES");//生成加密解密需要的Key

cipher.init(Cipher.ENCRYPT_MODE, keySpec);

result = cipher.doFinal(str.getBytes("UTF-8"));

}catch(Exception e){

e.printStackTrace();

}

returnresult;

}

/**

* @param  byte[] bytes  要被解密的字节数组

* @param  byte[] key    加/解密要用的长度为32的字节数组(256位)密钥

* @return String  解密后的字符串

*/

publicstaticString Aes256Decode(byte[] bytes,byte[] key){

initialize();

String result = null;

try{

Cipher cipher = Cipher.getInstance(ALGORITHM, "BC");

SecretKeySpec keySpec = newSecretKeySpec(key,"AES");//生成加密解密需要的Key

cipher.init(Cipher.DECRYPT_MODE, keySpec);

byte[] decoded = cipher.doFinal(bytes);

result = newString(decoded,"UTF-8");

}catch(Exception e){

e.printStackTrace();

}

returnresult;

}

publicstaticvoidinitialize(){

if(initialized)return;

Security.addProvider(newBouncyCastleProvider());

initialized = true;

}

}

可以看到,代码开头要先import Java Cryptography Extension (JCE)中的两个类——加/解密类Cipher和密钥类SecretKeySpec,以及BouncyCastle的一个开源加/解密类库中的加/解密算法提供者类BouncyCastleProvider。

PC上的Java里面只有"AES/ECB/PKCS5Padding"算法,没有"AES/ECB/PKCS7Padding"算法。故需要引入BouncyCastle的库,并给Cipher.getInstance方法传入参数"BC"来指定Java使用这个库里的加/解密算法。BouncyCastle的加/解密类库的下载地址:http://www.bouncycastle.org/latest_releases.html

在这段代码可以运行之前,还有一个问题需要解决。Java本身限制密钥的长度最多128位,而AES256需要的密钥长度是256位,因此需要到Java官网上下载一个Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files。在Java

SE的下载页面下面的Additional Resources那里会有下载链接。下载后打开压缩包,里面有两个jar文件。把这两个jar文件解压到JRE目录下的lib/security文件夹,覆盖原来的文件。这样Java就不再限制密钥的长度了。

aes256 java_用Java进行AES256相关推荐

  1. 【AES256】Java实现AES256加解密

    AES256加解密比较常见,这里简单记录以供参考! 一.下载 官方JDK默认支持AES-128,在 1.8.0_151 和 1.8.0_152 版本之前,需要从Oracle官网下载安全JAR包方可支持 ...

  2. aes 256 cbc java,AES256加解密java语言实现

    AES256加解密java语言实现 写在前面 基于项目安全性需要,有时候我们的项目会使用AES 256加解密算法.以下,是针对实现AES256 Padding7加密算法实现的关键步骤解析以及此过程遇到 ...

  3. aes256加密java_使用Java和JCEKS进行AES-256加密

    aes256加密java 总览 由于最近爱德华·斯诺登 ( Edward Snowden)发布了文件,以及针对JC Penny , Sony和Target等在线商业商店的黑客攻击激增,安全性已成为近年 ...

  4. java aes256 加密_JAVA中使用AES256加密

    前言:java默认支持128位加密规范,如果想支持256位加密规范,就需要使用无限制JCE策略文件,而现在Android端AES256的加密填充方式一般是PKCS7Padding,JAVA支持PKCS ...

  5. java使用AES256解密

    网上关于java用AES加密解密的文章有很多,我这里只用到解密(加密是服务器那边做^_^),所以更简洁一些: public class AES256Utils {private static fina ...

  6. 搭建java_搭建java开发环境

    ① 第一步.下载jdk安装包. jdk官方下载网址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-21 ...

  7. 深入java_深入Java Final

    JAVA关键字final用于修饰数据.方法或类,通常意味着"无法改变的",既数据不能改变,方法不能覆盖,类不能继承.一般采用final有两种原因:设计和效率.而随着JAVA版本的更 ...

  8. 圆通招java_圆通java程序员面试经验|面试题 - 职朋职业圈

    面试过程: 你所写的经历项目涉及到的东西,你在项目中的职责开发了哪部分:结构体对齐相关问题,怎样避免死锁,怎样在数据库添加成员 序列化 守护进程 JAVA的垃圾回收机制然后深入探讨了下这个 I+1其他 ...

  9. cloning java_深入浅出Java中的clone克隆方法,写得太棒了!

    作者:张纪刚 blog.csdn.net/zhangjg_blog/article/details/18369201/ 2019-03-24 10:33:04 Java中对象的创建 clone 顾名思 ...

最新文章

  1. Python 之 Numpy (一)属性
  2. 【Android 安装包优化】资源打包配置 ( resources.arsc 资源映射表 | 配置国际化资源 )
  3. vm ububtu突然没网
  4. CSDN博客文章写作技巧
  5. mysql OA_mysql优化工具—mysqloa
  6. 数据结构与算法专题——第一题 Bitmap算法
  7. 【英语学习】【WOTD】 putsch 释义/词源/示例
  8. 大动作!华为海思注册资本从6亿增加到20亿
  9. 谈一下ACM的入门书籍及方法
  10. 基于Opencv3.0对图像进行透视变换
  11. 爬梯:Docker全解析(二)
  12. 谷歌浏览器设置默认Flash
  13. Skype无法显示登录界面
  14. 35岁技术人如何转型做管理?mysql删除数据语句
  15. 计算机考研400分以上,考研400分是什么概念?
  16. Harbor安装(待补充)
  17. 计算机c盘那个是系统文件夹,C盘有哪些文件可以删除?可以手动删除的几个C盘中的文件夹...
  18. Gorilla源码分析之gorilla/mux源码分析
  19. description标签如何正确使用?
  20. 微信android字体颜色,如何用微信打出颜色各异的字

热门文章

  1. js swal()弹出框
  2. 掌握了2-3-4树也就掌握了红黑树,不信进来看看,建议收藏!
  3. 实现顺序表的各种基本运算的算法
  4. 微信h5实现分享给朋友url改变_h5网页 微信分享给好友,朋友圈-tp5
  5. python之mechanize模拟浏览器
  6. 如何备份一个磁盘分区
  7. 取消谷歌点击链接下载文件后但却自动将其打开
  8. 硬币之谜:如何用最少的步骤拿完所有硬币?
  9. C语言 关于字符串的表示
  10. 四种寻找技术合伙人的建议让你茅塞顿开