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