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 分析代码
主要介绍了Java实现的对称加密算法AES,结合实例形式分析了对称加密算法AES的定义、特点、用法及使用场景,需要的朋友可以参考下
VB6-AES加密算法源码,无错,可直接运行。密钥长度支持128 Bit,192 Bit,256 Bit。支持字符串加密和文件加密。
对应该文章 https://blog.csdn.net/qq_41970599/article/details/131134770?spm=1001.2014.3001.5501 C# 实现对称加密算法(AES)与非对称加密算法(RSA),实现前后端敏感数据的加密传输
java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...
实现当前AES对称加密算法!实现当前AES对称加密算法!
qt5AES加密,ES加密/解密算法是一种可逆的对称加密算法,这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推
DES、AES对称加密算法,之前从网上找的,但是在MAC上运行发现每次加密出来的结果都不一样,后来查了一些博客,最后确认是SecureRandom的随机算法问题,需要设置setSeed.
对称加密:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES 非对称加密:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)
基于python的对称加密算法aes
Java 加密解密之对称加密算法AES.docx
AES加密算法详解 对称和不对称加密
分享一个php对称加密算法DES和AES类,支持密钥:64/128/256 bit(字节长度8/16/32),支持算法:DES/AES(根据密钥长度自动匹配使用:DES:64bit AES:128/256bit),支持模式:CBC/ECB/OFB/CFB,密文编码:base64字符...
利用MFC实现AES非对称加密算法,其中有详细的算法注释
里面有VB写的两个对称加密算法(AES,本人写一个)里面有两个类
分享一个PHP对称加密算法DES,AES类,支持密钥:64/128/256 bit(字节长度8/16/32),支持算法:DES/AES(根据密钥长度自动匹配使用:DES:64bit AES:128/256bit)。
AES对称加密算法的Python代码实现,含基础UI界面,课程设计 AES加密算法涉及4种操作,分别是字节替代、行移位、列混淆和轮密钥加,解密算法的每一步分别对应加密算法的逆操作,且所有操作的顺序相反。加解密中每轮的...
常用加密算法的java实现总结,常用加密算法的java实现总结,常用加密算法的java实现总结,常用加密算法的java实现总结,常用加密算法的java实现总结
对称加密AES算法,实现前后端加密解密,前端使用cryptojs.js实现,后端使用java实现