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

Java无法解密用PHP加密的字符串

左丘峰
2023-03-14

大家好,我用openssl_encrypt用算法'aes-256-cbc'用PHP加密了字符串

密钥:C4E30455853D4949A8E91B2C366BE9DE

向量:5686044872102713

public static String Decrypt_AES_FromBase64(String AEncryptedText, String AKey32Bytes, String AVectorNum16Bytes) {
        try { 
            byte[] vEncryptedBytes = Base64.getDecoder().decode(AEncryptedText);

            Key SecretKey = new SecretKeySpec(AKey32Bytes.getBytes(), "AES");
            IvParameterSpec vSpec = new IvParameterSpec(AVectorNum16Bytes.getBytes());

            Cipher vCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            vCipher.init(Cipher.DECRYPT_MODE, SecretKey, vSpec);

            return new String(vCipher.doFinal(vEncryptedBytes));
        } catch (Exception e) {
                Common.mContext.getLogger().log(e.toString());
            return "";
        }
    }
javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher

共有1个答案

马梓
2023-03-14

加密字符串Akey32bytes是双Base64编码的。

而不是Akey32Bytes.getBytes(),您需要将加密的数据进行double Base64解码为二进制。

加密字符串:
ak9ystd6rxu5tenocuxqugxievhpz3vqslfiqudndgzrbvjvbelitgzjzz0=

一次Base64解码后:
joxi7zeu9lchqlpplbyxigujjqbaggtfkmroliblfcg=

在第二次Base64解码后(因为它不是二进制的,所以显示为十六进制):
8CE5C8EF312EF4B0A1A8B3CF95BC978A0BA32506C01A0B5F9264689486CB7DC8

这就是需要提供给解密函数的内容。

解密结果为:
(十六进制)257531362A2179704B40577255516272
(ASCII):“%u16*!YPK@WRUQBR”(所有有效的ASCII字符)

注意:有一个完整的PKCS#7填充块(十六进制):101010101010101010101010

尽管说这些让我很痛苦,但根据正确的填充,我可以假定解密是成功的。

参见隐型AES计算器

 类似资料:
  • 问题内容: 我是密码学的新手。我希望学习如何在文件中加密和解密文本……当我在net中引用相关文章时。我怀疑对同一文本进行多次加密后,单个文本的加密文本是否会相同?谁能解决我的疑问? 问题答案: 这是使用该类的示例:

  • 本文向大家介绍php加密解密字符串示例,包括了php加密解密字符串示例的使用技巧和注意事项,需要的朋友参考一下 收录了一些比较经典的PHP加密解密函数代码,分享给大家。加密解密原理一般都是通过一定的加密解密算法,将密钥加入到算法中,最终得到加密解密结果。     希望本文所述对大家PHP程序设计有所帮助。

  • 本文向大家介绍PHP加密解密字符串汇总,包括了PHP加密解密字符串汇总的使用技巧和注意事项,需要的朋友参考一下 项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理。 最常见的应用在用户登录以及一些API数据交换的场景。 笔者收录了一些比较经典的PHP加密解密函数代码,分享给大家。加密解密

  • 本文向大家介绍PHP解密Unicode及Escape加密字符串,包括了PHP解密Unicode及Escape加密字符串的使用技巧和注意事项,需要的朋友参考一下 本文给大家分享一个PHP解密Unicode及Escape加密字符串函数 在网上搜索一把,很多用php实现的escape函数,大同小异 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 问题内容: 我的意思是: 也许像: 在PHP中,您该怎么做? 尝试使用 ,但对我不起作用。 问题答案: 更新 PHP 7就绪版本。它使用PHP OpenSSL库中的openssl_encrypt函数。

  • 我的意思是: 可能是这样的: null 尝试使用,但对我不起作用。