我正在使用BCrypt的Java实现,我想测试一个字符串是否已经用BCrypt进行了哈希处理。有可能吗?
我找不到任何东西。它会像这样工作
if (!BCrypt.hasBeenHashed(myString)) {
return BCrypt.hashpw(myString, salt);
}
// BCrypt.hasBeenHashed("my-new-password") > FALSE
// BCrypt.hasBeenHashed("$fdshjkfhdsfhdjkshfjdhfjd") > TRUE
我的想法是,我有一个自动方法,在创建时散列一些字符串。当我更新对象时,我希望它只散列“新值”。
感谢。
答案 0 :(得分:0)
如果使用相同的算法,您可以读取所有散列的长度完全相同的长度。 22或32或53,具体取决于您的实施。如果使用Java 53。为了使这更可靠,您还可以检测到第一个字符是$,整个字符串应该是53个字符。位置3和6也包含$。还有其他因素可以检查,例如工作因素是相同的。这由位置1和2表示所有这些的组合和验证,以确保用户不输入类似的东西。如果这不可行,则创建一个实例boolean,当密码被哈希时设置为true,但要求每个密码都是它自己的对象。