php 中的 SHA1 加密和 SHA1 到十六进制

SHA1 encryption and SHA1 to Hex in php

我在 Java 中有两种方法,我想在 php 中使用相同的方法。我对 php 一无所知。我该怎么做?

方法一:

public static String encyptPassword (String in) throws UnsupportedEncodingException, NoSuchAlgorithmException{
    byte[] bytes=in.getBytes("UTF-8");
    MessageDigest md=MessageDigest.getInstance(MGF1ParameterSpec.SHA1.getDigestAlgorithm());
    md.update(bytes);
    byte[] digest=md.digest();
    return toHex(digest);
}

方法二:

public static String toHex(byte[] bytes) {
    BigInteger bi = new BigInteger(1, bytes);
    return String.format("%0" + (bytes.length << 1) + "x", bi);
}

php 中的方法(功能?)必须与 java 中的结果相同,因为它是 散列 工作和在线登录的密码系统.

我试了大约 3 个小时,但我做不到或找到了解决方案。我想我阅读了 Stack 上的所有帖子。你能帮助我吗?谢谢

  1. Hashing != Encryption
  2. SHA1 弱,SHA2 更好,bcrypt 是目前最好的密码存储通用哈希算法。
  3. $myHash = hash("SHA1", "foobar") Docs
  4. 不要使用#3,使用$myActuallySecureHash = password_hash("foobar") Docs
  5. 使用#4。
  6. PHP < 5.4 is not an excuse.

PHP Fiddle - 点击运行查看结果

<?php

    $pass = 'MySecretP@55';
    $hashed = hash("SHA512", $pass);
    echo $hashed;
    echo '<hr>' . bin2hex($hashed);

?>

以上是sha512,肯定比sha1好,bcrypt成本比较高算是目前最好的了