用AES加密密钥长度问题

qufei0325 qufei0325 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我想用AES加密信息,其中密钥是根据我输入的一个字符串生成的,运行时系统报错说“Exception in thread "main" java.security.InvalidKeyException: Invalid AES key length: 8 bytes”,出错的语句是“aesCipher.init(Cipher.ENCRYPT_MODE, aesKey);”,下面是我的代码:

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 恩

qq_36025957

AES加密任意长度的字符串和任意大小的文件

本代码可以实现加密任意长度的字符串和任意大小的文件。目前网上的代码只能加密长度有限的字符串!

xiaoai_123

java AES加密 解决加密过长非法异常问题

AES加密的两种方式。一种String 一种byte。并且添加进制转换解决加密过程非法报错问题

yueyongningshang

AES128位加密解密 任意长度

VS2013平台,C语言,AES加密解密,可实现任意长度

Lee_Goden

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加密的时候需要使用一个加密算的公共密钥来实现加密和解密; 加密后的字节数组不能直接转化为字符串,需要我们通过给出的两个方法转化;

江哥一直在
评论 4
收藏 已收藏
分享
返回顶部
qufei0325
Java 51,407 成员 86,130 内容