package com.wilson.EDecryption;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import junit.framework.Assert;
import org.apache.commons.codec.binary.Base64;
import org.junit.Test;
public class AESCoderTest {
@Test
public void test() throws Exception {
String inputStr = "AES加密";
byte[] inputData = inputStr.getBytes();
System.out.println("原文: \t" + inputStr);
// initial key
byte[] key = AESCoder.initKey();
System.out.println("密钥:\t" + Base64.encodeBase64String(key));
//encryption
inputData = AESCoder.encrypt(inputData, key);
System.out.println("加密后:\t" + Base64.encodeBase64String(inputData));
//decryption
byte[] outputData = AESCoder.decrypt(inputData, key);
String outputStr = new String(outputData);
System.out.println("解密后:\t" + outputStr);
Assert.assertEquals(inputStr, outputStr);
}
}
class AESCoder {
private static final String KEY_ALGORITHM = "AES";
private static final String CHIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";
public static byte[] initKey() throws NoSuchAlgorithmException {
KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM);
kg.init(128);
SecretKey secretKey = kg.generateKey();
return secretKey.getEncoded();
}
public static byte[] decrypt(byte[] data, byte[] key) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
Key k = new SecretKeySpec(key, KEY_ALGORITHM);
Cipher cipher = Cipher.getInstance(CHIPHER_ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, k);
return cipher.doFinal(data);
}
public static byte[] encrypt(byte[] data, byte[] key) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
Key k = new SecretKeySpec(key, KEY_ALGORITHM);
Cipher cipher = Cipher.getInstance(CHIPHER_ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, k);
return cipher.doFinal(data);
}
}
分享到:
相关推荐
C语言实现AES-128对称加解密算法。编译环境:VS2010。请参考我的博客https://blog.csdn.net/u013073067/article/details/86529111 分析代码
AES是一种广泛使用的对称加密算法,为数据提供高强度的安全保护。该源码经过验证,无错误,可以直接在VB6环境下运行,这对于开发者来说是一个宝贵的资源,可以快速集成到自己的项目中。 AES加密算法最初由比利时...
"Java实现的对称加密算法AES定义与用法详解" 对称加密算法AES是当前使用最多的加密算法之一,其主要特点是高级的、安全的、快速的和灵活的。下面我们将详细介绍Java实现的对称加密算法AES的定义、特点、用法及使用...
AES是一种广泛使用的对称加密算法,以其高效和安全性著称。"ES加密/解密算法"可能是描述错误,通常指的是AES算法在Elasticsearch(ES)中的应用,因为标签提到了"Elasticsearch",而且在安全领域,Elasticsearch也会...
对应该文章 https://blog.csdn.net/qq_41970599/article/details/131134770?spm=1001.2014.3001.5501 C# 实现对称加密算法(AES)与非对称加密算法(RSA),实现前后端敏感数据的加密传输
- **AES(Advanced Encryption Standard)**:高级加密标准,是目前最常用的对称加密算法之一,具有较高的安全性和较快的加密速度。 ### 非对称加密算法 非对称加密算法,又称公钥加密算法,其特点是加密和解密...
AES,全称Advanced Encryption Standard,即高级加密标准,是一种广泛应用于现代数据保护的对称加密算法。这个"tiny-AES-c-1.0.0"项目是AES算法的一个小型C语言实现,适用于嵌入式系统和其他资源有限的环境。下面...
java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...
对称加密算法包括了多种算法,本文主要介绍DES、3DES和AES这三种常见的对称加密算法,并对它们进行Java实现的总结。 首先,对称加密算法的一个关键优势在于其算法公开、计算量小、加密速度快、加密效率高,但它们也...
AES(Advanced Encryption Standard)是目前广泛采用的对称加密算法,其中128位版本是AES的基础形式,提供强大的安全性。本篇将详细介绍GCM-AES-128加解密以及密钥打包aes_wrap的相关知识点。 1. **GCM-AES-128 加...
常见的对称加密算法包括DES(Data Encryption Standard)、3DES(Triple DES)、AES(Advanced Encryption Standard)和Blowfish等。这些算法都有不同的安全性、速度和密钥长度,开发者可以根据具体需求进行选择。 ...
AES(Advanced Encryption Standard)是一种对称加密算法,于2000年10月由美国国家标准和技术研究院(NIST)选定为新的加密标准,以替代DES。AES的设计原则是能抵抗所有已知的攻击,在各种平台上易于实现,速度快,...
AES加密算法是当前最流行和最安全的对称加密算法之一,也是美国国家标准技术研究所(NIST)指定的高级加密标准(AES)。AES加密算法的设计原则是能够抵抗所有已知的攻击,在各种平台上易于实现,速度快,并且设计...
AES(Advanced Encryption Standard)是一种对称加密算法,以其高效性和安全性而被广泛采用。AES的核心操作是基于替换和置换的组合,通过多次迭代来加密数据。具体来说,AES分为4个主要步骤:字节替代、行移位、列...
AES(Advanced Encryption Standard)是目前广泛应用的一种对称加密算法,由NIST(美国国家标准与技术研究院)在2001年正式采纳。AES的核心在于其替换和置换操作,通过一系列复杂的数学运算,确保数据在加密和解密...
物联网之安全算法:加密算法(AES, RSA):对称加密算法原理与应用.docx
物联网之安全算法:加密算法(AES, RSA):非对称加密算法原理与应用.docx
### 对称加密算法与非对称加密算法 #### 对称加密算法 ##### 概述 对称加密算法是一种历史悠久且广泛使用的加密技术。在这种加密方式中,加密和解密使用相同的密钥。也就是说,发送方使用一个密钥来加密信息,接收...
DES、AES对称加密算法,之前从网上找的,但是在MAC上运行发现每次加密出来的结果都不一样,后来查了一些博客,最后确认是SecureRandom的随机算法问题,需要设置setSeed.
本文将深入探讨如何利用MFC(Microsoft Foundation Classes)框架实现AES(Advanced Encryption Standard)非对称加密算法。AES是一种广泛使用的对称加密算法,而非对称加密则引入了公钥和私钥的概念,使得加密和...