`
yaodaqing
  • 浏览: 349591 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

JAVA和C通讯的AES加密和解密,供参考

阅读更多
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;
	}
}

分享到:
评论
3 楼 缘来是你 2016-02-01  
同求C源码
2 楼 ioandy 2016-01-05  
同求C源码,757455159@qq.com
1 楼 ninthbar 2012-05-23  
最近项目也要和c系统交互,请问能否提供一下C语言的相应加解密实现代码?

相关推荐

    java前后端通讯AES加密及解密样例

    通过这个案例,我们可以看到在Spring Boot项目中实现AES加密解密的基本步骤。然而,实际项目中还应考虑其他安全措施,例如使用HTTPS协议、密钥的动态生成和安全存储、以及对称加密与非对称加密的结合使用等,以增强...

    c AES, c++ AES, java AES, 互通, 加密解密

    在本文中,我们将探讨如何在C、C++和Java之间实现互通的AES加密解密方法,以及如何不依赖外部加密库,仅通过基本的字符和数组操作来实现这一过程。 首先,理解AES的工作原理至关重要。AES由一系列的替换和转换步骤...

    JAVA实现AES加密和解密

    总的来说,理解并正确使用Java实现AES加密和解密,需要注意秘钥的生成、工作模式的选择、填充方式以及字符编码的一致性,这样才能确保数据的安全传输和正确解密。通过实际操作和实践,你可以更深入地掌握这些知识点...

    Java实现AES加密和解密算法

    在Java中实现AES(Advanced Encryption Standard)加密和解密算法主要涉及到对称密钥加密技术。AES算法是一种块密码,采用固定大小的128位(16字节)块进行加密和解密,支持128、192和256位的密钥长度。在给定的代码...

    c/c++ 与java互通 AES加密解密,算法ECB

    压缩包里有两个工程,一个vc6.0一个myeclipse,本帖是修复贴,原帖地址c/c++ 与java互通 AES加密解密,算法ECB/PKCS5PADDING http://download.csdn.net/download/wangsonghiweed/4328267 -来自CSDN,有童鞋反映有...

    Delphi.rar_AES_AES加密_delphi AES加密_delphi 加解密_java delphi aes

    总的来说,这个资源为Delphi开发者提供了一种实现AES加密解密的方式,并且保证了与Java平台的兼容性。通过理解和应用这些代码,开发者可以增强他们的应用程序在数据安全方面的性能,同时也能更好地与其他Java应用...

    AES实现前端JS和后端java加密解密

    后端Java实现AES加密解密: 1. **导入依赖**:在Java中,我们需要添加Apache Commons Codec库来处理Base64编码,以及Java Cryptography Extension (JCE)来支持AES操作。确保JCE未受限制,因为默认情况下,Java对某些...

    C++/java/C#语言的AES加密解密

    标题中的"C++/java/C#语言的AES加密解密"涉及到的是三种常用编程语言——C++、Java和C#在实现AES(Advanced Encryption Standard,高级加密标准)算法上的应用。AES是一种广泛使用的对称加密算法,它在信息安全领域...

    c/c++与java互通 AES加密解密

    本话题主要探讨如何在C/C++和Java之间使用基本的字符串和数组操作实现AES加密解密,而不依赖任何额外的加密库。 首先,我们来了解AES加密的基本原理。AES基于块密码,每个数据块为128位,支持128、192和256位的密钥...

    java代码-java使用AES加密解密 AES-128-ECB加密

    java代码-java使用AES加密解密 AES-128-ECB加密 ——学习参考资料:仅用于个人学习使用

    java使用AES加密/解密文件

    本教程将详细讲解如何在Java中使用AES加密和解密文件,以确保数据的安全性。 AES全称为Advanced Encryption Standard,是一种对称加密算法,它在信息安全领域中被广泛应用,因为其速度快、效率高且安全性强。Java...

    C语言AES加密解密,CBC模式,256(含测试代码且结果与Java一致)

    本项目涉及的是C语言实现的AES加密解密功能,特别关注了CBC(Cipher Block Chaining)模式以及256位的密钥长度。以下是对这些知识点的详细阐述: **AES加密算法:** AES是由NIST(美国国家标准与技术研究所)在2001...

    AES加密/解密,C,java,delphi互解

    在标题中提到的"C, java, delphi互解"意味着这个压缩包内包含了用C、Java和Delphi三种编程语言实现的AES加密和解密功能,而且这些实现可以相互兼容,这意味着无论你在哪个平台上或使用哪种语言,都能对加密的数据...

    Java AES128加密解密

    Java中的AES128加密解密是信息安全领域中常见的数据保护技术。AES,全称Advanced Encryption Standard,是一种块密码标准,被广泛应用于各种场景,包括网络传输、存储数据加密等。128位是AES的一个关键参数,表示...

    java后台及前端js使用AES互相加解密及前端md5加密

    在Java中,可以使用`javax.crypto.Cipher`类和`java.security.SecureRandom`类来实现AES加解密。前端JavaScript也有相应的库,如CryptoJS,可以用于AES操作。 2. **Java后台AES加解密**:在Java中,首先需要创建一...

    java使用Hex编码解码实现Aes加密解密功能示例

    在本文示例中,我们关注的是如何利用Java的Hex编码和解码来处理AES加密和解密的过程。 首先,让我们了解什么是Hex编码。Hex编码是一种将二进制数据转换为可打印字符的表示方式,每个字节被转换为两个十六进制数字...

    Java使用AES加密和解密的实例详解

    Java使用AES加密和解密的实例详解主要介绍了Java使用AES加密和解密的实例详解的相关资料,需要的朋友可以参考下。 AES加密是一种对称的加密算法,可以基于相同的密钥进行加密和解密。下面将详细讲解Java采用AES算法...

    AES JS加密JAVA解密

    总结来说,"AES JS加密JAVA解密"涉及到的是跨语言的加密解密实践,主要依赖于JavaScript的CryptoJS库和Java的`javax.crypto`包。在实际操作中,需要确保两边的加密参数(如密钥、模式和填充方式)一致,同时考虑到...

    java 基于AES实现对文件的加密 解密

    在实现AES加密解密时,要特别注意错误处理和数据完整性检查。例如,确保文件读取和写入的正确性,以及在解密过程中处理可能的异常。此外,www.willvc.com.cn 提供的资源可能是进一步学习和解决问题的途径。 总之,...

    C语言AES加密解密(ECB,256,包含测试代码)

    C语言实现AES加密解密,加密结果与Java中AES的ECB模式,NoPadding补码方式结果一致;支持中文加密,但是限定密钥32位,加密内容16位;若需要变化可作为参考

Global site tag (gtag.js) - Google Analytics