用AES加密密钥长度问题
import javax.crypto.spec.*;
import javax.crypto.*;
public class Experiment {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
SecretKeySpec aesKey = new SecretKeySpec("12345678".getBytes(), "AES");
Cipher aesCipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
aesCipher.init(Cipher.ENCRYPT_MODE, aesKey); //这句报错了
byte[] plaintext = "Hello!".getBytes();
byte[] ciphertext = aesCipher.doFinal(plaintext);
aesCipher.init(Cipher.DECRYPT_MODE, aesKey);
byte[] decrypted = aesCipher.doFinal(ciphertext);
System.out.println(decrypted);
}
}
问题出在哪里?应该怎么改?请大家帮帮忙!
相关推荐
aes128加密可以任意密钥长度和明文长度
aes128加密可以任意密钥长度和明文长度 c代码 linux 恩
AES加密任意长度的字符串和任意大小的文件
本代码可以实现加密任意长度的字符串和任意大小的文件。目前网上的代码只能加密长度有限的字符串!
java AES加密 解决加密过长非法异常问题
AES加密的两种方式。一种String 一种byte。并且添加进制转换解决加密过程非法报错问题
AES128位加密解密 任意长度
VS2013平台,C语言,AES加密解密,可实现任意长度
Java实现AES加密和解密算法
本文就简单介绍如何通过JAVA实现AES加密: /** * 测试AES加密和解密 * @param args */ public static void main(String[] args) { /**数据初始化**/ String content = "http://www.mbaike.net"; String password = "1234567890"; /**加密(1)**/ System.out.println("加密前:" + content); byte[] encryptResult = encrypt(content, password); String encryptResultStr = parseByte2HexStr(encryptResult); System.out.println("加密后:" + encryptResultStr); /**解密(2)**/ byte[] decryptFrom = parseHexStr2Byte(encryptResultStr); byte[] decryptResult = decrypt(decryptFrom,password); System.out.println("解密后:" + new String(decryptResult)); } } 说明如下: 在demo中使用了两个转换方法,及二进制转化成十六进制,和十六进制转化成二进制; 我们在AES加密的时候需要使用一个加密算的公共密钥来实现加密和解密; 加密后的字节数组不能直接转化为字符串,需要我们通过给出的两个方法转化;


