我在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上的所有帖子。你能帮助我吗?感谢。
答案 0 :(得分:3)
PHP Fiddle - 点击运行以查看结果
<?php
$pass = 'MySecretP@55';
$hashed = hash("SHA512", $pass);
echo $hashed;
echo '<hr>' . bin2hex($hashed);
?>
以上是sha512
,这肯定比sha1
好,而且成本相当高的bcrypt被认为是目前最好的
答案 1 :(得分:2)
$myHash = hash("SHA1", "foobar")
Docs $myActuallySecureHash = password_hash("foobar")
Docs