AES 256(Rijndael)加密文本的BCrypt(河豚)密码

时间:2011-05-27 17:16:45

标签: java security encryption hash aes

我决定尝试使用BCrypt来获取AES256(Rijndael / CBC)的哈希键。

问题是AES256密钥长度必须是32个字节。 BCrypt键长60个字节,自然总是不同。也许是相当困难和漫长的一周应该受到责备,但我无法看到我如何使用BCrypt与AES256结合使用的键。我只是感到疲倦和失明,或者没有办法做到这一点?

由于

3 个答案:

答案 0 :(得分:2)

您是否尝试哈希(如密码)并将其用作AES密钥?

我不熟悉BCrypt,但是SHA-256会创建一个与AES 256密钥大小相同的哈希值。或者,如果你一直在使用BCrypt,你可以只读取该哈希的前32个字节并丢弃其余部分。

答案 1 :(得分:0)

我认为你不应该从加密计算中丢弃字节,因为这些字节应该支持你保留的其他字节 - 丢弃一些会削弱输出。

答案 2 :(得分:0)

您需要的是安全的Key Derivation Function。按照注释中的建议截断字节有时会起作用,但它总是取决于上下文,所以如果你不完全确定它就不要这样做。

在您需要“拉伸”输入的情况下,截断将无法正常工作,这也是最容易出错的地方。如果您无法使用安全随机生成器创建密钥,通常,您要做的是将一些非随机输入(例如密码)转换为值得作为密钥材料的内容。显然,非随机数据的熵通常不足以达到目的。

如果要将密码转换为AES或任何其他对称加密算法的任意长度密钥,请查看PKCS#5并使用其PBKDF2。