无效的AES密钥长度错误

此代码给出了无效的AES密钥长度错误。我该如何纠正?(我想要128位密钥AES加密)

package org.temp2.cod1;

import java.security.*;

import javax.crypto.*;

import javax.crypto.spec.*;

import java.io.*;

public class Code1 {

public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {

String s = "9882623867";

byte[] plaintext = s.getBytes("UTF-16");

String s2 = "supernova";

byte[] key = s2.getBytes("UTF-16");

Cipher c = Cipher.getInstance("AES");

SecretKeySpec k = new SecretKeySpec(key, "AES");

c.init(Cipher.ENCRYPT_MODE, k);

byte[] encryptedData = c.doFinal(plaintext);

System.out.println(encryptedData);

}

}

任何帮助表示赞赏

回答:

使用a

SecretKeyFactory从密码派生密钥字节。您可以在此处查看详细示例。请注意,您需要指定128位密钥的密钥长度,而不是该示例中所示的256位。

您将遇到的下一个问题是您没有指定填充方案。除非您的消息是16字节(AES块大小)的倍数,否则将引发错误。如示例所示,使用PKCS5Padding。

在密码上使用CBC模式将需要为每个消息选择一个新的初始化向量。该唯一的IV必须与加密的消息一起发送给收件人。

尝试不充分了解此处提出的概念(甚至更多)而执行加密操作,可能会导致系统不安全。

以上是 无效的AES密钥长度错误 的全部内容, 来源链接: utcz.com/qa/404307.html

回到顶部