Java 检查字符串是否已用BCrypt散列

Java 检查字符串是否已用BCrypt散列,java,hash,bcrypt,jbcrypt,Java,Hash,Bcrypt,Jbcrypt,我正在使用BCrypt的Java实现,我想测试是否已经用BCrypt对字符串进行了哈希处理。有可能做到这一点吗 我什么也找不到。它会像这样工作 if (!BCrypt.hasBeenHashed(myString)) { return BCrypt.hashpw(myString, salt); } // BCrypt.hasBeenHashed("my-new-password") > FALSE // BCrypt.hasBeenHashed("$fdshjkfhdsfhdj

我正在使用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,但要求每个密码都是它自己的对象。

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

否。没有实现这一点的机制。我认为您需要将每个字符串的“已哈希处理”信息存储在其他位置,例如在某种
映射中。
myString.charAt(0)
上的
$
符号是我唯一能想到的另一种方式,但这不是很可靠,因为您的输入字符串可以包含任何内容(并且以
$
开头)。否。没有这样做的机制。我认为您需要将每个字符串的“已哈希”信息存储在其他位置,例如,在某种
映射中。
myString.charAt(0)
上的
$
符号是我唯一能想到的另一种方法,但这不是很可靠,因为您的输入字符串可以包含任何内容(并且以
$
开头)。是的,我想到了,但正如@Hexaholic所说,这不是100%确定,因为用户可以拥有完全符合这些要求的密码。是的,我想到了,但正如@Hexaholic所说,这不是100%确定,因为用户可以拥有完全符合这些要求的密码。