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

密码功能:错误的最终块长度Android Studio

单展
2023-03-14

有很多关于堆栈溢出的线程与这个主题,总是相同的解决方案,但这些对我不起作用。我正在寻找一种方法来解密值byte[]encrypted并返回byte[]decodedbytes。

使用Aescrypt方法。我使用编译“com.scottyab:aescrypt:0.0.1”

private void testAES() {
    try {

       final byte[] encrypted = Base64.decode("R3JhbmRlIFZpY3RvaXJlICE=", Base64.NO_WRAP);

       byte[] keyBytes = Base64.decode("L/91ZYrliXvmhYt9FKEkkDDni+PzcnOuV9cikm188+4=", Base64.NO_WRAP);
       final byte[] ivBytes = Base64.decode("gqjFHI+YQiP7XYEfcIEJHw==".getBytes(), Base64.NO_WRAP);

       final SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");

       byte[] decodedBytes = AESCrypt.decrypt(keySpec, ivBytes, encrypted);

   } catch (Exception e) {
       e.printStackTrace();
   }
 }

对于值密码,我是这样使用的。

private static byte[] testCipher() {

    try {

        final byte[] encrypted = Base64.decode("R3JhbmRlIFZpY3RvaXJlICE=", Base64.NO_WRAP);

        byte[] keyBytes = Base64.decode("L/91ZYrliXvmhYt9FKEkkDDni+PzcnOuV9cikm188+4=", Base64.NO_WRAP);
        byte[] ivBytes = Base64.decode("gqjFHI+YQiP7XYEfcIEJHw==".getBytes(), Base64.NO_WRAP);

        final IvParameterSpec ivSpecForData = new IvParameterSpec(ivBytes);

        SecretKeySpec decodedKeySpec = new SecretKeySpec(keyBytes, "AES");
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, decodedKeySpec, ivSpecForData);

        byte[] decodedBytes = cipher.doFinal(encrypted); // I have the error here //

        return decodedBytes;

    } catch (Exception e) {
        e.printStackTrace();
    }

    return null;
}

错误:1E06B07B:密码函数:evp_decryptfinal_ex:wrong_final_block_lengt

我尝试放入Cipher.getInstance(aes/cbc/nopadding,aes/cbc/pkcs5padding,aes/cbc/pkcs7padding),但没有任何改变。你有什么办法可以帮我吗?

共有1个答案

姚晋
2023-03-14

“r3jhbmrlifzpy3rvaxjlice=”解码为17个十六进制字节4772616e646520566963746f6972652021即ASCII文本:“Grande Victoire!”。

17字节不是AES的有效大小,AES是一种要求加密数据为16字节块大小的倍数的分组密码。

没有加密,只有Base64编码。

 类似资料:
  • 问题内容: 使用此Gist,我能够在Node.js 0.8.7中成功解密AES256。然后,当我升级到Node.js 0.10.24时,现在看到此错误: TypeError:错误:0606506D:数字信封例程:EVP_DecryptFinal_ex: Decipheriv.Cipher.final(crypto.js:292:27)的最终块长度错误 这是Gist的解密代码(为方便起见,在此处显示

  • 我已经尝试了谷歌和SOF上的几种不同的方法,但我似乎无法让它起作用。我正在尝试用PHP加密一个字符串,用Java解密(Android活动)。在PHP中,为了加密字符串,我使用AES-256-CBC和sha256散列(它在PHP中成功地加密/解密)。问题是无论我尝试什么,我都无法获得Java中未加密的字符串。我最近的尝试以“cipher functions:openssl_internal:wron

  • 我的问题来自于如何用blowfish散列长密码(>72个字符) 我正在使用bcrypt(blowfish)对密码进行散列。因此,我从这个问题中发现https://security.stackexchange.com/questions/39849/does-bcrypt-have-a-maximal-password-length 它的字符限制为72。 所以,我开始考虑限制密码的最大长度,但在这些

  • 请帮助我识别以下RSA加密代码中的问题

  • 问题内容: 继承人错误: 这是导致它的代码: 图标是文件数组。奇怪的是,我的计算机可以在任何图像查看器中正常读取图像。谷歌搜索错误没有给我任何结果。我有很多图像需要阅读,因此除了将图像转换为BufferedImage之外,它们是获取图像尺寸的一种替代方法吗?这样可以解决问题吗?有没有办法修复这些图像?我是通过从iOS设备收集应用程序图标来获得它们的。使用我自己的设备进行的测试没有产生任何错误,尽管

  • 问题内容: 此代码给出了无效的AES密钥长度错误。我该如何纠正?(我想要128位密钥AES加密) 任何帮助表示赞赏 问题答案: 使用a 从密码派生密钥字节。您可以在此处查看详细示例。请注意,您需要指定128位密钥的密钥长度,而不是该示例中所示的256位。 您将遇到的下一个问题是您没有指定填充方案。除非您的消息是16字节(AES块大小)的倍数,否则将引发错误。如示例所示,使用PKCS5Padding