import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
/**
* 自己做的JAVA和C通讯的AES加密和解密,供参考
* @author yaodaqing
*
*/
public class AESAndC02 {
/**
* 密钥
*/
private static final String aesKey = "0123456789abcdef";
/**
* 加密
* @param b
* @return
*/
public static byte[] encryptAES(byte[] b){
if (aesKey == null) {
System.out.print("Key为空null");
return null;
}
//判断Key是否为16位
if (aesKey.length() != 16) {
System.out.print("Key长度不是16位");
return null;
}
try {
byte[] raw = aesKey.getBytes("ASCII");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(b);
return encrypted;
} catch (Exception e) {
System.out.println("数据加密时发生异常...");
e.printStackTrace();
}
return null;
}
/**
* 解密
* @param b
* @return
* 由于C语言在加密时采用了模式,所以JAVA在解析时需要采用模式来解密
*/
public static byte[] decryptAES(byte[] b){
//判断Key是否正确
if (aesKey == null) {
System.out.print("Key为空null");
return null;
}
//判断Key是否为16位
if (aesKey.length() != 16) {
System.out.print("Key长度不是16位");
return null;
}
try {
byte[] raw = aesKey.getBytes("ASCII");
SecretKeySpec skp = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, skp);
byte[] original = cipher.doFinal(b);
return original;
} catch (Exception e) {
System.out.println("数据解密时发生异常...");
e.printStackTrace();
}
return null;
}
}
分享到:
相关推荐
本案例使用springboot进行快速构建项目,AES进行对称加密及解密
本文就简单介绍如何通过JAVA实现AES加密: /** * 测试AES加密和解密 * @param args */ public static void main(String[] args) { /**数据初始化**/ String content = "http://www.mbaike.net"; String...
压缩包里有两个工程,一个vc6.0一个myeclipse,本帖是修复贴,原帖地址c/c++ 与java互通 AES加密解密,算法ECB/PKCS5PADDING http://download.csdn.net/download/wangsonghiweed/4328267 -来自CSDN,有童鞋反映有...
c/c++与java互通 AES加密解密; 只使用基本char,数组运算实现加密算法;不依赖其它加密lib
java代码-java使用AES加密解密 AES-128-ECB加密 ——学习参考资料:仅用于个人学习使用
1.采用秘钥为16位长度的加密字符 2.加密算法为AES/ECB/PKCS5Padding 3.解决加解密乱码问题 4.完整的线上可运行代码及各方法及步骤注释 5.无任何插件,java环境直接运行
Delphi实现AES加密和解密, 同Java加解密兼容
主要介绍了java使用Hex编码解码实现Aes加密解密功能,结合完整实例形式分析了Aes加密解密功能的定义与使用方法,需要的朋友可以参考下
C语言实现AES加密解密,CBC模式,密钥32位,向量16位;加密结果同Java一致,但是因补码方式有区别,Java需是NoPadding补码方式;加密内容则需16的倍数;
AES使用java和js互相加解密及前端MD5加密,java后台加密前端js解密,或前端js加密,后端java解密,
前台页面通过引入提供的两个js,实现AES加密解密。后端java代码通过压缩包里的博客信息配置AESUtil.java公共类。
C++/java/C#语言的AES加密解密。纯C++代码开发,没调用API库,可以对它进行打包到各种终端下。
AES JS加密JAVA解密
java aes128/256 对称加密解密,rsa对称加密解密验签实现,php java通用aes加密 支持任何形式的aes加密,文件,字符,字节等,内含php代码,可以与php平台实现aes加密,而且包含rsa非对称加密签名验签实现,都是对...
AES加密解密算法的Java实现.doc
java 基于AES实现对文件的加密 解密 有问题 www.willvc.com.cn 能联系到我
java实现aes加解密
* 编码工具类 * 1.将byte[]转为各种进制的字符串 * 2.base 64 encode * 3.base 64 decode * 4.... * 5.... * 6.... * 7.AES加密 * 8.AES加密为base 64 code * 9.AES解密 * 10.将base 64 code AES解密
AES加密有多种算法模式,下面提供两套模式的可用源码: 一、CBC(Cipher Block Chaining,加密块链)模式 二、ECB(Electronic Code Book,电子密码本)模式 其中CBC模式下,有.NET的源码。而ECB模式的,大家在网上找...
java、Android、javaScript(可以改成vue)、ios AES加密通用,可在服务端加密,客户端解密,也可在客户端加密,服务端解密;由于csdn会自动把积分改到50,可以发邮件到1622007541@qq.com 免费送