当前位置: 首页 > 知识库问答 >
问题:

非法密钥大小-AES CBC解密

冉永宁
2023-03-14
public static byte[] decrypt() throws Exception
{
    try{
        byte[] ciphertextBytes = convertToBytes("cb12f5ca1bae224ad44fdff6e66f9a53e25f1000183ba5568958430c11c6eafc62c04de8bf27e0ac7104b598fb492142");
        byte[] keyBytes = convertToBytes("CFDC65CB003DD50FF5D6D826D62CF9CA6C64489D60CB02D18C1B58C636F8220D");
        byte[] ivBytes = convertToBytes("cb12f5ca1bae224a");

        SecretKey aesKey = new SecretKeySpec(keyBytes, "AES");

        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
        cipher.init(Cipher.DECRYPT_MODE, aesKey, new IvParameterSpec(ivBytes));

        byte[] result = cipher.doFinal(ciphertextBytes);
        return result;
    }
    catch(Exception e)
    {
        System.out.println(e.getMessage());
    }
     return null;
}
    //convert ByteArray to Hex String
public static String convertToHex(byte[] byteArray)
{
    StringBuilder sb = new StringBuilder();
    for (byte b : byteArray)
    {
        sb.append(String.format("%02X", b));
    }
    return sb.toString();
}

//convert String to ByteArray
private static byte[] convertToBytes(String input) {
    int length = input.length();
    byte[] output = new byte[length / 2];

    for (int i = 0; i < length; i += 2) {
        output[i / 2] = (byte) ((digit(input.charAt(i), 16) << 4) | digit(input.charAt(i+1), 16));
    }
    return output;
}

也许你能帮我。非常感谢!

共有1个答案

元修然
2023-03-14

您可能已经达到了Oracle JRE中的密钥大小限制。从链接的文档:

如果需要更强的算法(例如,具有256位密钥的AES),则必须获取JCE无限强度管辖策略文件并将其安装在JDK/JRE中。

用户有责任验证该操作是否在当地法规下是允许的。

 类似资料:
  • 问题内容: 我的测试可以在开发的MacBook Pro上很好地运行,但是无法在持续集成的TeamCity服务器中运行。 错误如下: java.security.InvalidKeyException: Illegal key size at javax.crypto.Cipher.a(DashoA13..) at javax.crypto.Cipher.init(DashoA13 ..) at j

  • 我目前正在用java编写一个加密消息传递服务,我使用的是bouncycastle PGP库。我编写了一个生成密钥对的测试程序,并对消息进行加密/解密。这已经工作了一段时间,但它最近在解密阶段停止了,给了我一个InvalidKeyException。 我做了一些研究,下载了JCE.jar文件,并将它们导入到我的项目中(通过Eclipse Project->Properties->add extern

  • 我正在尝试使用Nimbus JOSE+JWT从我的私钥解密JWE数据。 有人能帮我解决这个问题吗。我使用的是Java1.8 我的私钥 我的JWE数据

  • 问题内容: 我遇到以下错误,并且有点卡住:线程“ main”中的异常 我被困住了,因为我找到的所有答案都涉及通常包含在android SDK中的Java 密码扩展(JCE) 。所以我认为我的问题不是这个。 我一定忘记了一些东西,但是我找不到。也许我的代码是错误的(这是我使用Java进行加密的第一种方法,我不是专家,下面的代码大部分是教程的复制粘贴)。 我使用以下代码对String进行加密和解密:

  • 问题内容: 我使用AES 256密钥加密字节时遇到问题。我已经安装了该策略。这是我所做的: 下载文件:http : //www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html 我将文件local_policy和US_export_policy移至目录/Library/Java/JavaVirtualMa