php中的SHA1加密和SHA1到Hex

时间:2015-11-27 00:42:52

标签: java php sha1 password-encryption

我在Java中有两种方法,我想在php中使用相同的方法。我在php中完全不知道。我该怎么办?

方法1:

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);
}

方法2:

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上的所有帖子。你能帮助我吗?感谢。

2 个答案:

答案 0 :(得分:3)

PHP Fiddle - 点击运行以查看结果

<?php

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

?>

以上是sha512,这肯定比sha1好,而且成本相当高的bcrypt被认为是目前最好的

答案 1 :(得分:2)

  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.