Java环境使用AES加密
来源:互联网 发布:c网络编程那本书好 编辑:程序博客网 时间:2024/05/18 11:36
昨晚本应该到下班的时间了,可领到突然说“那谁,我刚在.net环境下使用AES加密一段字符串,现在想要检测一下加密结果对不对,你帮我在Java环境下加密一下,看看最终加密结果是否一致。”虽然一致没使用过AES加密,但也得硬着头皮上啊。好在网上现成的资源很多,感谢开源。
网上搜了一大把AES加密工具类,参考代码:C#与java中的AES加解密互解算法
通过sout输入,最终结果当然肯定和.net加密结果一致。
在Java环境下测试
package com.hy.junl.textdemo;import org.apache.commons.codec.binary.Base64;import org.junit.Test;import javax.crypto.Cipher;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;/** * ============================================= * 作 者:Junl * 描 述: * <p> * 创建日期:2017/6/21 * 文艺青年:人生若只如初见,何事秋风悲画扇。 * ============================================= */public class AESTestTest { String cKey = ")O[xfrs]6,YF}+efcaj{+oESb9d8>Zhy"; String cSrc = "name=admins&idcard=1234567890"; String cIv = "L+\\~f4Ir)b$=xfrs"; @Test public void AES() throws Exception { String string = Encrypt(cSrc, cKey.getBytes(), cIv.getBytes()); System.out.println("Java环境下加密结果:"+string); } /** * @param sSrc 需要加密的字符串 * @param key 加密密钥 * @param iv 向量 * @return * @throws Exception */ public String Encrypt(String sSrc, byte[] key, byte[] iv) throws Exception { SecretKeySpec skeySpec = new SecretKeySpec(key, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");// "算法/模式/补码方式" IvParameterSpec _iv = new IvParameterSpec(iv);// 使用CBC模式,需要一个向量iv,可增加加密算法的强度 cipher.init(Cipher.ENCRYPT_MODE, skeySpec, _iv); byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8")); String string = Base64.encodeBase64String(encrypted);//注意:Base64为 import org.apache.commons.codec.binary.Base64; return string; }}
注意:
- 列表内容在java环境下,需要导入commons-codec-1.10.jar包。
- 下载local_policy.jar和US_export_policy.jar 解压缩用local_policy.jar和US_export_policy.jar覆盖掉%JRE_HOME%\lib\security 和 %JDK_HOME%\jre\lib\security目录下原来的文件(jdk和jre都要覆盖掉)
否则会报异常: java.security.InvalidKeyException: Illegal key size
运行结果:
在Android环境下测试
String cKey = ")O[xfrs]6,YF}+efcaj{+oESb9d8>Zhy"; // 需要加密的字串 String cSrc = "name=admins&idcard=1234567890"; String iv = "L+\\~f4Ir)b$=xfrs"; try { String encrypt = AESCode.Encrypt(cSrc, cKey.getBytes(), iv.getBytes()); Log.i("Android环境下加密结果:", encrypt); } catch (Exception e) { e.printStackTrace(); }
public static String Encrypt(String sSrc, byte[] key, byte[] iv) throws Exception { SecretKeySpec skeySpec = new SecretKeySpec(key, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");// "算法/模式/补码方式" IvParameterSpec _iv = new IvParameterSpec(iv);// 使用CBC模式,需要一个向量iv,可增加加密算法的强度 cipher.init(Cipher.ENCRYPT_MODE, skeySpec, _iv); byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8")); String string = Base64.encodeToString(encrypted, Base64.DEFAULT);//注意Base64 为import android.util.Base64; return string; }
运行结果
阅读全文
0 0
- Java环境使用AES加密
- java使用AES加密
- java使用AES加密
- java使用AES加密
- JAVA AES加密使用
- Java 环境下使用 AES 加密的特殊问题处理
- JAVA中使用AES加密
- java使用AES加密解密 AES-128-ECB加密
- java中AES加密的简单使用
- Aes使用Java加密C#解密
- 使用AES,java加密与js解密
- 使用java进行 AES 加密 解密
- 在linux环境下将java对象转成json字串并使用AES加密传输数据
- Blackberry 6,7 java环境下AES 128加密
- 使用AES加密用户密码
- CryptoJS 使用AES加密
- 加密解密。(aes, java)
- JAVA的AES加密
- Tomcat启动报异常java.lang.ClassNotFoundException
- 行思-怀念和大家在一起学习工作的日子
- Mybatis配置和接口映射原理
- Android 计时器、倒计时(一)
- opendaylight各模块编译
- Java环境使用AES加密
- 一些常见的子列问题【思维】
- Eclipse中实现 Tomcat 热部署
- perl处理埋点日志
- 深入浅出讲解:php的socket通信
- 树状数组求逆序对
- Java笔试题解-流程控制(2)
- SpringMVC接收前台传递过来的值的方法
- Leetcode Largest Rectangle in Histogram