我试图在php中创建哈希,但我无法获得正确的哈希值。
java代码是:
if (sPassword == null || sPassword.equals("")) {
return "empty:";
} else {
try {
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(sPassword.getBytes("UTF-8"));
byte[] res = md.digest();
return "sha1:" + StringUtils.byte2hex(res);
} catch (NoSuchAlgorithmException e) {
return "plain:" + sPassword;
} catch (UnsupportedEncodingException e) {
return "plain:" + sPassword;
}
}
有人可以将此翻译成php吗?
例如,如果我在Java中添加以下传递:123456789
,则哈希为:sha1:625D7360E198F528978A4D061F3420923AF867C5
。
答案 0 :(得分:0)
PHP有一个sha1()
函数,你的代码应该是这样的:
<?php
if ($sPassword == null || $sPassword == "")
{
return "empty:";
}
else
{
if (!function_exists("sha1"))
{
return "plain:" . $sPassword;
}
else
{
return "sha1:" . strtoupper(sha1($sPassword));
}
}
?>
需要strtoupper()
来使哈希大写,因为sha1()
以小写形式返回它。我相信function_exists("sha1")
将始终返回false,因为sha1()
是内置函数。但也许有一些特定的构建选项,你可以摆脱它。
只需注意:sha1()
会为您提供空密码的哈希值。
答案 1 :(得分:0)
试试这个:
<?PHP
$sPassword = "enter-password-here";
if(!empty($sPassword)) {
return sprintf("sha1 hash: %s", sha1($sPassword));
} else {
return "empty";
}
?>