gpt4 book ai didi

android - AES Gingerbread

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:58 26 4
gpt4 key购买 nike

This是我的 AES 代码。

在 Gingerbread 下,我在 2.2 上加密数据然后尝试在 2.3 上解密后出现以下错误:

 Caused by: javax.crypto.BadPaddingException: pad block corrupted
at org.bouncycastle.jce.provider.JCEBlockCipher.engineDoFinal(JCEBlockCipher.java:715)
at javax.crypto.Cipher.doFinal(Cipher.java:1090)
at com.citc.wallet.util.security.SimpleCrypto.decrypt(SimpleCrypto.java:63)
... 21 more

我发现一些帖子说 SecureRandom 在不同的系统下产生不同的结果:

BouncyCastle AES error when upgrading to 1.45

如何在 2.3 上避免这个问题?
我可以以某种方式强制 2.3 使用相同的 SecureRandom 类吗?
我是否需要使用某种可移植的加密方法,如果需要怎么办?

最佳答案

答案是你根本不应该真正做你正在做的事情。这是罪魁祸首:

sr.setSeed(seed);
kgen.init(128, sr); // 192 and 256 bits may not be available
SecretKey skey = kgen.generateKey();

你永远不应该用一些不可预测的随机值来填充你的 key ,因为你以后需要重新创建这个完全相同的 key 。以下是 android 文档中的一些关键行

"Seeding SecureRandom may be insecure"

Although it is common practice to seedRandom with the current time, that isdangerous with SecureRandom since thatvalue is predictable to an attackerand not appropriate for secure use.

无论如何,我知道你的论点是你只是在“填充” key ,而你所做的事情的安全性并不是什么大问题。

如果您要接受 192 位或 256 位实现的 128 位 key ,则必须实现一种可重复的方法,将 key 扩展到 192 位或 256 位。如果愿意,您甚至可以将全 0 添加到 key 中,但真正的关键是必须以某种方式完成,以便您可以在每个系统上重复它。

无论如何,您可能还需要考虑您正在做的事情可能会在 Android 以外的系统上使用。在这些情况下,应该选择使用更“便携”的方法来扩展 key 。

关于android - AES Gingerbread ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4536241/

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