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

Java AES解密检测错误密钥

夏侯和韵
2023-03-14

我正在编写android应用程序,使AES加密/解密的文件。我希望能够检测是否指定了不正确的密码,因此不匹配的密钥是为解密派生的。我使用aes/cbc/pkcs7padding和256位密钥。如果我执行cipher.doFinal(),我可以尝试/捕捉BadPaddingException,它会告诉我有些地方出错了,可能是key不正确。但是如果我使用CipherInputStream读取加密文件,我不会得到关于填充正确性的反馈。因此,如果我故意指定不正确的密码,它解密文件,然后报告一切正常,但解密文件是一个完全的垃圾。所以我的问题是在使用CipherInputStream时如何检测错误填充?

共有1个答案

红经亘
2023-03-14

在数据前准备一些已知的标头。首先解密它,如果它不符合您所期望的,停止并返回错误。

 类似资料:
  • 我有一个应用程序,需要在配置文件中存储一些秘密密码,如数据库和ftp密码/详细信息。我环顾四周,发现了许多使用AES的加密/解密解决方案,但我似乎不知道如何在不改变密钥的情况下使其工作。这意味着我可以加密和解密(使用相同的秘密密钥),但在重启等过程中保持持久性。我似乎无法让秘密钥匙保持不变。下面的示例显示了我的工作方法: 到目前为止还不错。然而,如果我运行它一次,我可能会得到'2Vhht/L80U

  • 我正在尝试解密服务器上的加密字符串。但当我解密的时候,我发现了错误。我需要成功解密字符串。我们正在使用AES 256 cbc 当我使用aes/cbc/nopadding时,我能够解密,但是文本中附加了垃圾字符。 解密A:2:{S:5:“电子邮件”;S:24:“afroj.alam@broc.com”;S:8:“密码”;S:7:“test123”;} 实际字符串A:2:{S:5:“email”;S:

  • 我编写了一个简单的Java AES加密和解密,如下所示(用于学习): 编辑: 我想我搞错了。黑客可能不会使用我的程序来解密。所以对于AES来说,如果一个人解密失败,他会知道解密失败,但不会像我想的那样,从解密中得到错误的字节?这太可怕了...

  • 问题内容: 我正在尝试在我的Android应用程序中加密和解密字符串,但始终收到InvalidKeyException错误。 这是我的代码: //生成密钥方法 //加密方法 //解密方法 //测试代码 看起来加密工作正常,因为它打印出如下内容: 加密= SbA2iWWKQbDL7NTA9xvtjD / viYDdpx9fLRYTSZ8UQzdBy3QLqzkswBY21ErH7FPza3vZys4

  • 问题内容: 我正在编写一个从控制台输入的程序- 一个zip文件的名称,一个将包含从第一个zip文件生成的(解密)加密文件的zip文件的名称以及一个包含公钥的文件。解密时出现异常: 无法弄清楚为什么会出现此异常? 公钥: 私钥: 该程序的代码如下。任何帮助都很好:) PS:更新了方法。仍然给出相同的错误。 问题答案: 约瑟夫是对的。 使用默认参数创建密码时,默认密码为“ RSA / ECB / PK

  • 我尝试获得一对密钥(公共和私有)来加密/解密文本。对于加密没有问题。对于解密来说,我从一天开始就犯了一个错误,我不明白为什么。 这是代码的相关部分: