Java 使用shiro对密码进行哈希和盐析
在apache shiro中,默认哈希实现如下所示:Java 使用shiro对密码进行哈希和盐析,java,hash,salt,shiro,Java,Hash,Salt,Shiro,在apache shiro中,默认哈希实现如下所示: MessageDigest digest = getDigest(getAlgorithmName()); if (salt != null) { digest.reset(); digest.update(salt); } byte[] hashed = digest.digest(bytes); int iterations =
MessageDigest digest = getDigest(getAlgorithmName());
if (salt != null) {
digest.reset();
digest.update(salt);
}
byte[] hashed = digest.digest(bytes);
int iterations = hashIterations - 1; //already hashed once above
//iterate remaining number:
for (int i = 0; i < iterations; i++) {
digest.reset();
hashed = digest.digest(hashed);
}
return hashed;
MessageDigest digest=getDigest(getAlgorithmName());
if(salt!=null){
reset();
文摘.最新情况(salt);
}
字节[]哈希=摘要。摘要(字节);
int iterations=hashIterations-1//上面已经散列过一次了
//迭代剩余的数字:
对于(int i=0;i
注意它是如何把盐放在第一位的。我们必须针对一个遗留系统进行身份验证,其中哈希值是password+salt,而不是salt+password
我目前正在这个方法调用之外执行concat,并为salt传入null。除了子类化和重写这个方法之外,还有比我现在必须做的更好的方法吗?事实证明,子类化SimpleHash并重写一个方法就成功了。只需重新设置消化,添加盐,然后添加pw,然后消化,效果良好