检查是否已使用BCrypt对字符串进行了哈希处理

时间:2015-09-17 13:55:24

标签: java hash bcrypt jbcrypt

我正在使用BCrypt的Java实现,我想测试一个字符串是否已经用BCrypt进行了哈希处理。有可能吗?

我找不到任何东西。它会像这样工作

if (!BCrypt.hasBeenHashed(myString)) {
    return BCrypt.hashpw(myString, salt);
}

// BCrypt.hasBeenHashed("my-new-password") > FALSE
// BCrypt.hasBeenHashed("$fdshjkfhdsfhdjkshfjdhfjd") > TRUE

我的想法是,我有一个自动方法,在创建时散列一些字符串。当我更新对象时,我希望它只散列“新值”。

感谢。

1 个答案:

答案 0 :(得分:0)

如果使用相同的算法,您可以读取所有散列的长度完全相同的长度。 22或32或53,具体取决于您的实施。如果使用Java 53。为了使这更可靠,您还可以检测到第一个字符是$,整个字符串应该是53个字符。位置3和6也包含$。还有其他因素可以检查,例如工作因素是相同的。这由位置1和2表示所有这些的组合和验证,以确保用户不输入类似的东西。如果这不可行,则创建一个实例boolean,当密码被哈希时设置为true,但要求每个密码都是它自己的对象。