我尝试使用MessageDigest生成linux影子文件中的相同散列,给定密码、salt值和散列算法,尽管结果与从下面的函数得到的结果不匹配。
哈希算法=6
密码=曼德尔
盐值=5H0QpwprRiJQR19Y
预期产量=6$5h0qpwrijqr19y$bXGOh7dIfOWpUb/Tuqr7yQVCqL3UkrJns9.7msfvMg4ZOPsFC5Tbt32PXAw9qRFEBs1254aLimFeNM8YsYOv。
实际输出=CA0d04319f273f26f246975a4f9c71d0184c4ca7f3ba54bc0b3e0b4106f0eefca1e9a122a536fb17273b1077367bf68365c10fa8a2b18285a685628f364194
我有这个函数来生成散列值
public String getSha512Hash(String password, String saltValue) throws NoSuchAlgorithmException{
String text = saltValue + password ;
MessageDigest messageDigest = MessageDigest.getInstance("SHA-512");
byte[] bytes = messageDigest.digest( text.getBytes() );
StringBuilder sb = new StringBuilder();
for (int i = 0; i < bytes.length; ++i) {
sb.append(Integer.toHexString((bytes[i] & 0xFF) | 0x100).substring(1,3));
}
return sb.toString();
}
我指的是this网站。
最佳答案
/etc/shadow
中的密码使用crypt(3)
系统调用(man crypt
)进行散列。
您可以使用Apache Commons implementation来模拟相同的行为。