`

AES-ECB-128加密算法

阅读更多
要加密或解密的数据必须是16的倍数。
package com.hx.dlms.cipher;

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;

import cn.hexing.fk.utils.HexDump;

public class AESECB128 {
	private static final byte[] staticKey = HexDump.toByteBuffer("00000000000000000000000000000000").array();

	public static byte[] encrypt(byte[] plainText) {
		return encrypt(plainText,staticKey);
	}
	
	/**
	 * 加密
	 * 
	 * @param content
	 *            需要加密的内容
	 * @param enckey
	 *            加密密码
	 * @return
	 */
	public static byte[] encrypt(byte[] content, byte[] enckey) {
		try {
			SecretKeySpec key = new SecretKeySpec(enckey, "AES");
			Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");// 创建密码器
			cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化
			byte[] result = cipher.doFinal(content);
			return result; // 加密
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (NoSuchPaddingException e) {
			e.printStackTrace();
		} catch (InvalidKeyException e) {
			e.printStackTrace();
		} catch (IllegalBlockSizeException e) {
			e.printStackTrace();
		} catch (BadPaddingException e) {
			e.printStackTrace();
		}
		return null;
	}

	public static byte[] decrypt(byte[] cipherText) {
		return decrypt(cipherText,staticKey);
	}
	/**
	 * 解密
	 * 
	 * @param content
	 *            待解密内容
	 * @param deckey
	 *            解密密钥
	 * @return
	 */
	public static byte[] decrypt(byte[] content, byte[] deckey) {
		try {
			SecretKeySpec key = new SecretKeySpec(deckey, "AES");
			Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");// 创建密码器
			cipher.init(Cipher.DECRYPT_MODE, key);// 初始化
			byte[] result = cipher.doFinal(content);
			return result; // 加密
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (NoSuchPaddingException e) {
			e.printStackTrace();
		} catch (InvalidKeyException e) {
			e.printStackTrace();
		} catch (IllegalBlockSizeException e) {
			e.printStackTrace();
		} catch (BadPaddingException e) {
			e.printStackTrace();
		}
		return null;
	}

	public static void main(String[] args) {
		String content = "6789:;<=>?@AB012";
		String password = "00000000000000000000000000000000";
		byte[] mykey = HexDump.toByteBuffer(password).array();
		// 加密
		System.out.println("加密前:" + content);
		byte[] encryptResult = encrypt(content.getBytes(), mykey);
		System.out.println("cipher text: " + HexDump.hexDumpCompact(encryptResult,0,encryptResult.length));
		// 解密
		byte[] decryptResult = decrypt(encryptResult, mykey);
		System.out.println("解密后:" + new String(decryptResult));
	}

}
分享到:
评论

相关推荐

    php使用openssl_encrypt中的AES-128-ECB加密解密

    3. **加密**:调用`openssl_encrypt`函数,传入明文、加密算法('AES-128-ECB')、操作模式(OPENSSL_RAW_DATA表示不使用base64编码输出)以及密钥。例如: ```php $key = 'your_128bit_key'; $plaintext = 'This...

    nodejs的base64和aes-128-ecb加密.rar

    在这个"nodejs的base64和aes-128-ecb加密.rar"压缩包中,包含的`EncryptTool.js`和`EncryptTool.ts`文件很可能是两个实现Base64编码和AES-128-ECB加密的工具类。接下来,我们将深入探讨这两个知识点。 首先,Base64...

    php使用openssl_encrypt中的AES-128-ECB加密.docx

    **AES-128-ECB加密算法** AES(Advanced Encryption Standard)是一种块密码,它使用128位的数据块进行操作,并有多种密钥长度:128位、192位和256位。在这个例子中,我们使用的是128位的密钥,即AES-128。ECB...

    ios开发 AES-128-ECB加密

    之前遇到的需求,ios上没有类似的实现。搞了好久在网上搜了很多资料都不能解决最后找到了一个c/c++的底层源码,才实现了最后整理了下上传了。...运行在xcode环境下,关键算法的文件是AES.h和AES.mm文件。

    微信小程序AESECB128加密实现.zip

    AES,即高级加密标准,是目前广泛使用的对称加密算法,因其高效性和安全性而被广泛采用。ECB(Electronic Codebook)模式是AES的一种工作模式,它将明文数据块按固定大小进行分组并分别加密。128位则指的是密钥长度...

    AES-128加密算法,C语言实现

    AES-128加密算法是高级加密标准(Advanced Encryption Standard)的一种变体,它使用128位的密钥对数据进行加密。AES是目前最广泛使用的对称加密算法之一,因其高效性和安全性而备受推崇。在C语言中实现AES-128,...

    AES_ECB_加密算法aes-ecb_aesecb_aesc语言_ecbaes_aes_ecb_

    在编写AES_ECB加密程序时,需要注意以下几点: - 保证密钥和明文的有效性,通常AES要求密钥长度为128、192或256位,明文块必须是128位。 - 确保数据的安全存储,避免明文和密钥在内存中被泄露。 - 如果需要加密大...

    AES-128-CBC加密解密处理,包含c# 、java 、c++、Node、PHP、Python

    微信官方提供了多种编程语言的示例代码 https://mp.weixin.qq.com/debug/wxadoc/dev/demo/aes-sample.zip 。发现没有 c# 和 java 的AES-128-CBC加密解密处理,然后我补充一下 c# 和 java 配合的加密解密

    AES-256 ecb模式加解密软实现算法,标准数测试通过。

    标准数测试通常指的是对加密算法进行的一系列基准测试,以验证其正确性和效率。这些测试可能包括NIST(美国国家标准与技术研究所)发布的SP800-38A等标准,其中包含了各种已知的测试向量,确保加密库在处理不同输入...

    AES128 ECB、CBC模式加密解密函数(C语言实现 -单片机/嵌入式)

    AES128是一种广泛使用的对称加密算法,全称为Advanced Encryption Standard,128表示其块大小为128位。在嵌入式系统和单片机应用中,AES128由于其高效性和安全性而备受青睐。ECB(Electronic Codebook)和CBC...

    AES(ECB、CBC、CFB、CTR)128/192/256加密算法C语言实现

    1、完整的AES(ECB、CBC、CFB、CTR)算法,C语言实现,可用于金融POS安全认证;...2、AES-128、AES-192、AES-256加密/解密 3、内含测试程序,在Linux环境下进入目录后make即可编译,已经在ubuntu16.04环境下编译测试OK;

    AES-ECB-zero.zip

    AES是一种广泛使用的块加密算法,由NIST(美国国家标准和技术研究所)在2001年采纳为标准。它基于替换和置换网络,提供128位的块大小和128、192或256位的密钥长度。AES的工作原理是通过一系列的混淆和扩散步骤,将...

    C++ AES算法ECB模式包含128,192,256三种密钥

    C++ AES算法ECB模式包含128,192,256三种密钥

    AES分组加密算法 ECB模式1(代替原来的“AES分组加密算法 ECB模式”,“AES分组加密算法 ECB模式”文件已损坏,下载后不能解压)

    在本项目中,开发者使用了C语言在Visual Studio 2008环境下实现了一个AES分组加密算法的ECB(Electronic Codebook)模式版本。 **AES算法基础** AES由一系列称为轮的操作组成,包括字节替换(SubBytes)、行移位...

    OPENSSL加密解密大集合

    AES-128-ECB,AES-128-CBC,AES-128-OFB,AES-128-CFB,AES-128-CTR。AES-192-ECB,AES-192-CBC,AES-192-OFB,AES-192-CFB,AES-192-CTR。AES-256-ECB,AES-256-CBC,AES-256-OFB,AES-256-CFB,AES-256-CTR。DES:。DES-ECB,...

    AES-128 ECB pkcs5padding

    4. **初始化加密器**:创建一个AES-128的ECB加密对象,并设置密钥。 5. **加密**:将预处理后的数据块送入加密器,得到密文。 6. **解密**:解密过程与加密类似,只是使用了相同的密钥和ECB解密器。解密后,需要...

    python3-AES128:使用ECB模式的AES-128加密

    在`python3-AES128-master`这个项目中,可能包含了使用Python实现AES-128 ECB加密的示例代码,包括如何创建加密器,填充数据,以及加密和解密的过程。你可以通过查看源代码学习具体实现细节。在实际项目中,记得根据...

    php aes 128 ecb 加密

    PHP作为广泛使用的服务器端脚本语言,提供了多种加密算法,其中AES(Advanced Encryption Standard)是一种广泛应用的对称加密算法。本篇文章将详细探讨PHP如何实现AES128 ECB(Electronic Codebook)模式的加密。 ...

    PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】

    在本文中,我们将深入探讨如何在PHP7和JavaScript的CryptoJS库之间实现AES-128-ECB加密方式的互通。AES(Advanced Encryption Standard),即高级加密标准,是一种广泛使用的块加密算法,128-ECB表示使用128位的密钥...

    C语言 实现AES-CBC-128-ZeroPadding 加解密算法 完整可编译工程

    C语言 实现AES_CBC_128_ZeroPadding 加解密算法 完整可编译工程

Global site tag (gtag.js) - Google Analytics