我如何加密一个密码,把它插入db和比较后,他什么时候会想要连接?
我将使用StandardPasswordEncoder Spring security 3.1.4加密我的密码并将其插入DB。但是我如何回收方法产生的盐呢?
StandardPasswordEncoder encoder = new StandardPasswordEncoder("secret");
String result = encoder.encode("myPassword");
assertTrue(encoder.matches("myPassword", result));
我问她是因为我需要selt命令来重新编码比较的密码?并验证用户是否必须输入正确的密码?
这里的密码编码:9E7E3A73A40871D4B489ADB746C31ACE280D28206DDED9665BAC40EABFE6FFDC32A8C5C416B5878F
和我会比较编码新密码
链接文档Spring:http://docs.Spring.io/spring-security/site/docs/3.1.4.release/reference/crypto.html链接API Spring security 3.1.4:http://docs.Spring.io/spring-security/site/docs/3.1.4.release/apidocs/
我想你是在问它是怎么工作的??答案相当简单。StandardPasswordEncoder.matchs()
是您要使用的方法。在幕后,standardpasswordencoder
将对散列密码进行解码,并从得到的字节数组中提取salt。然后,它将使用该salt对您传入的纯文本密码进行哈希。如果得到的哈希值与原始哈希值匹配,则您的密码匹配!有关standardpasswordencoder.matchs()
背后的详细信息,请参阅源代码:
public boolean matches(CharSequence rawPassword, String encodedPassword) {
byte[] digested = decode(encodedPassword);
byte[] salt = subArray(digested, 0, saltGenerator.getKeyLength());
return matches(digested, digest(rawPassword, salt));
}
问题内容: 在Java中以至少32个字节长的String形式生成SALT值的最佳方法是什么? 问题答案:
在Java中,将SALT值生成为至少32字节长的字符串的最佳方法是什么?
我想使用 scrypt 为用户的密码和盐创建哈希。我找到了两个参考资料,但有些地方我不明白。 他们使用scrypt加密和解密功能。一个加密随机字符串,另一个加密盐(这看起来是错误的,因为只有密码而不是盐用于解密)。看起来解密功能用于验证密码/盐作为解密的副作用。 根据我对的了解,我想要的是一个密钥派生函数(KDF)而不是加密/解密,并且KDF很可能是由scrypt生成并使用的加密/解密。实际的KD
我四处看看,最接近的答案是:如何生成随机的字母数字字符串? 我想根据本CrackStation教程遵循此工作流: 存储密码 > 使用CSPRNG生成长随机盐。 在密码前添加salt,并使用标准加密哈希函数(如SHA256)对其进行哈希运算。 在用户的数据库记录中保存salt和哈希。 验证密码的步骤 > 从数据库中检索用户的盐和哈希。 将salt前置到给定密码,并使用相同的哈希函数对其进行哈希运算。
问题内容: 我的Go程序需要知道所有系统和用户进程的当前cpu使用率。 我如何获得? 问题答案: 我遇到了类似的问题,但从未找到轻量级的实现。这是我的解决方案的精简版,可以回答您的特定问题。我按照tylerl的建议对文件进行采样。您会注意到,我在两次采样之间等待3秒以匹配top的输出,但是在1或2秒的情况下我也取得了不错的结果。我在go例程中的循环中运行类似的代码,然后在需要其他go例程时访问cp
问题内容: 我一直在搜索,但仍然不确定“盐”是什么以及如何使用/实现它。对不起这个问题,我是自学php。 问题答案: 我绝对不是专家,但是真正简短的答案是“涂一行”文本意味着在其末尾添加一些额外的字符。您可以将“ salt”和“ abcdefg”加盐以获得“ saltabcdefg”。如果“盐”恰好是您想要使其更难猜测的密码,则这可能很有用。 通常,密码+盐会通过一些难以逆转的过程转换(“散列”)