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;
}
}
分享到:
相关推荐
通过这个案例,我们可以看到在Spring Boot项目中实现AES加密解密的基本步骤。然而,实际项目中还应考虑其他安全措施,例如使用HTTPS协议、密钥的动态生成和安全存储、以及对称加密与非对称加密的结合使用等,以增强...
在本文中,我们将探讨如何在C、C++和Java之间实现互通的AES加密解密方法,以及如何不依赖外部加密库,仅通过基本的字符和数组操作来实现这一过程。 首先,理解AES的工作原理至关重要。AES由一系列的替换和转换步骤...
总的来说,理解并正确使用Java实现AES加密和解密,需要注意秘钥的生成、工作模式的选择、填充方式以及字符编码的一致性,这样才能确保数据的安全传输和正确解密。通过实际操作和实践,你可以更深入地掌握这些知识点...
在Java中实现AES(Advanced Encryption Standard)加密和解密算法主要涉及到对称密钥加密技术。AES算法是一种块密码,采用固定大小的128位(16字节)块进行加密和解密,支持128、192和256位的密钥长度。在给定的代码...
压缩包里有两个工程,一个vc6.0一个myeclipse,本帖是修复贴,原帖地址c/c++ 与java互通 AES加密解密,算法ECB/PKCS5PADDING http://download.csdn.net/download/wangsonghiweed/4328267 -来自CSDN,有童鞋反映有...
总的来说,这个资源为Delphi开发者提供了一种实现AES加密解密的方式,并且保证了与Java平台的兼容性。通过理解和应用这些代码,开发者可以增强他们的应用程序在数据安全方面的性能,同时也能更好地与其他Java应用...
后端Java实现AES加密解密: 1. **导入依赖**:在Java中,我们需要添加Apache Commons Codec库来处理Base64编码,以及Java Cryptography Extension (JCE)来支持AES操作。确保JCE未受限制,因为默认情况下,Java对某些...
标题中的"C++/java/C#语言的AES加密解密"涉及到的是三种常用编程语言——C++、Java和C#在实现AES(Advanced Encryption Standard,高级加密标准)算法上的应用。AES是一种广泛使用的对称加密算法,它在信息安全领域...
本话题主要探讨如何在C/C++和Java之间使用基本的字符串和数组操作实现AES加密解密,而不依赖任何额外的加密库。 首先,我们来了解AES加密的基本原理。AES基于块密码,每个数据块为128位,支持128、192和256位的密钥...
java代码-java使用AES加密解密 AES-128-ECB加密 ——学习参考资料:仅用于个人学习使用
本教程将详细讲解如何在Java中使用AES加密和解密文件,以确保数据的安全性。 AES全称为Advanced Encryption Standard,是一种对称加密算法,它在信息安全领域中被广泛应用,因为其速度快、效率高且安全性强。Java...
本项目涉及的是C语言实现的AES加密解密功能,特别关注了CBC(Cipher Block Chaining)模式以及256位的密钥长度。以下是对这些知识点的详细阐述: **AES加密算法:** AES是由NIST(美国国家标准与技术研究所)在2001...
在标题中提到的"C, java, delphi互解"意味着这个压缩包内包含了用C、Java和Delphi三种编程语言实现的AES加密和解密功能,而且这些实现可以相互兼容,这意味着无论你在哪个平台上或使用哪种语言,都能对加密的数据...
Java中的AES128加密解密是信息安全领域中常见的数据保护技术。AES,全称Advanced Encryption Standard,是一种块密码标准,被广泛应用于各种场景,包括网络传输、存储数据加密等。128位是AES的一个关键参数,表示...
在Java中,可以使用`javax.crypto.Cipher`类和`java.security.SecureRandom`类来实现AES加解密。前端JavaScript也有相应的库,如CryptoJS,可以用于AES操作。 2. **Java后台AES加解密**:在Java中,首先需要创建一...
在本文示例中,我们关注的是如何利用Java的Hex编码和解码来处理AES加密和解密的过程。 首先,让我们了解什么是Hex编码。Hex编码是一种将二进制数据转换为可打印字符的表示方式,每个字节被转换为两个十六进制数字...
Java使用AES加密和解密的实例详解主要介绍了Java使用AES加密和解密的实例详解的相关资料,需要的朋友可以参考下。 AES加密是一种对称的加密算法,可以基于相同的密钥进行加密和解密。下面将详细讲解Java采用AES算法...
总结来说,"AES JS加密JAVA解密"涉及到的是跨语言的加密解密实践,主要依赖于JavaScript的CryptoJS库和Java的`javax.crypto`包。在实际操作中,需要确保两边的加密参数(如密钥、模式和填充方式)一致,同时考虑到...
在实现AES加密解密时,要特别注意错误处理和数据完整性检查。例如,确保文件读取和写入的正确性,以及在解密过程中处理可能的异常。此外,www.willvc.com.cn 提供的资源可能是进一步学习和解决问题的途径。 总之,...
C语言实现AES加密解密,加密结果与Java中AES的ECB模式,NoPadding补码方式结果一致;支持中文加密,但是限定密钥32位,加密内容16位;若需要变化可作为参考