gpt4 book ai didi

encryption - Bouncy CaSTLe 中这是什么级别的加密

转载 作者:行者123 更新时间:2023-12-02 22:14:35 25 4
gpt4 key购买 nike

我发现了一些使用 Bouncy CaSTLe 加密数据的代码,但我找不到任何文档来说明正在使用哪种算法来加密数据或 key 使用了多少位。我也找不到 Bouncy CaSTLe 的论坛。有谁知道它使用的是什么算法以及 key 有多少位?

BlowfishEngine blowfishEngine = new BlowfishEngine();
CBCBlockCipher cbcBlockCipher = new CBCBlockCipher(blowfishEngine);

KeyParameter key = new KeyParameter(key);

BufferedBlockCipher cipher = new PaddedBlockCipher(cbcBlockCipher);

cipher.init(true, key);

int size = cipher.getOutputSize(data.length);
byte[] result = new byte[size];
int olen = cipher.processBytes(data, 0, data.length, result, 0);
olen += cipher.doFinal(result, olen);

if (olen < size)
{
byte[] tmp = new byte[olen];
System.arraycopy(result, 0, tmp, 0, olen);
result = tmp;
}

最佳答案

算法是Blowfish , 在 Cipher Block Chaining 中运行操作模式。 Blowfish 允许范围广泛的 key 大小,从 32 位到 448 位。也就是说,它使用 64 位 block 大小(它可以在一个段中加密的数据量),这不如 AES 等密码中的 128 位 block 大小安全。否则,Blowfish 是一种非常安全的密码,只要您使用 128 位或更大的 key 大小。

也就是说,在重新加密操作方面它的性能不是很好(重新加密需要永远,这就是为什么它的 key 计划是 bcrypt 的基础)。最好的选择是使用 AES-256(将 BlowfishEngine 换成 AESEngine)。

就 key 大小而言,根据您的评论,您似乎正在尝试直接使用密码作为加密 key 。这是一种非常糟糕的做法,并且很容易对您的加密进行暴力破解。您应该改为使用密码来驱动 key 派生函数,如 PBKDF2,这将为您提供更安全、更长的 key 。查看this answer了解在 Java 中使用 BouncyCaSTLe 执行此操作的好方法。

关于encryption - Bouncy CaSTLe 中这是什么级别的加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14705309/

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