gpt4 book ai didi

解密时出现 javax.crypto.IllegalBlockSizeException

转载 作者:行者123 更新时间:2023-12-02 13:40:34 25 4
gpt4 key购买 nike

我当前编写的解密算法如下,

    public String decrypt(String enc) throws Exception
{
Key key = k;
Cipher crypt = Cipher.getInstance("AES");
crypt.init(Cipher.DECRYPT_MODE,key);
byte[] decrypt = crypt.doFinal(enc.getBytes());
return new String(decrypt);
}

我得到的错误是在行

 byte[] decrypt = crypt.doFinal(enc.getBytes());

我见过与本文类似的问题,但我使用的是 128 位 key ,所以我很确定没有填充。

这就是我生成 key 的方式

  public static SecretKey getKey() throws Exception
{
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
return keyGen.generateKey();
}

此外,使用 Base64 进行解码会产生完全相同的错误

    public String decrypt(String enc) throws Exception
{
Key key = k;
Cipher crypt = Cipher.getInstance("AES");
crypt.init(Cipher.DECRYPT_MODE,key);
byte[] decrypt = crypt.doFinal(Base64.getMimeDecoder().decode(enc));
return new String(decrypt);
}

最佳答案

public String decrypt(String enc)

当您到达这里时,问题已经发生了。问题是您正在 String 中传递密文。 String 不是二进制数据的容器。使用byte[]

关于解密时出现 javax.crypto.IllegalBlockSizeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42755334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com