我尝试使用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来模拟相同的行为。

09-10 05:44
查看更多