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 上的所有帖子。你能帮助我吗?谢谢
- Hashing != Encryption
- SHA1 弱,SHA2 更好,bcrypt 是目前最好的密码存储通用哈希算法。
$myHash = hash("SHA1", "foobar")
Docs
- 不要使用#3,使用
$myActuallySecureHash = password_hash("foobar")
Docs
- 使用#4。
- 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成本比较高算是目前最好的了
我在 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 上的所有帖子。你能帮助我吗?谢谢
- Hashing != Encryption
- SHA1 弱,SHA2 更好,bcrypt 是目前最好的密码存储通用哈希算法。
$myHash = hash("SHA1", "foobar")
Docs- 不要使用#3,使用
$myActuallySecureHash = password_hash("foobar")
Docs - 使用#4。
- 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成本比较高算是目前最好的了