将java加密转换为php
我试图用php做一个哈希,但是我不能得到正确的哈希 java代码是:将java加密转换为php,java,php,encryption,Java,Php,Encryption,我试图用php做一个哈希,但是我不能得到正确的哈希 java代码是: if (sPassword == null || sPassword.equals("")) { return "empty:"; } else { try { MessageDigest md = MessageDigest.getInstance("SHA-1"); md.update(sPassword.getBytes("UTF-8
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
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()
以小写形式返回它。我相信函数存在(“sha1”)
将始终返回false,因为sha1()
是一个内置函数。但是,也许有一些特定的构建选项,你可以摆脱它
请注意:sha1()
将为空密码提供哈希值。只需尝试以下操作:
<?PHP
$sPassword = "enter-password-here";
if(!empty($sPassword)) {
return sprintf("sha1 hash: %s", sha1($sPassword));
} else {
return "empty";
}
?>
由于我们使用的是“return”,我相信这段代码是用户定义的函数()的一部分。
谢谢,这段代码为我提供了sha1散列:f7c3bc1d808e04732adf679965ccc34ca7ae3441,用于输入123456789。我需要:sha1:625D7360E198F528978A4D061F3420923AF867C5。谢谢,这段代码为我提供输入123456789的sha1散列:f7c3bc1d808e04732adf679965ccc34ca7ae3441。我需要:sha1:625D7360E198F528978A4D061F3420923AF867C5。你确定这是“123456789”的散列吗?我在一个带有sha1哈希数据库的站点上检查了哈希,结果显示输入为“.adgjmptw”(对于PHP版本来说是正确的)。您可以尝试另一个输入并在此处共享结果吗?有趣的是,.adgjmptw”的字符在ASCII表中彼此相差三步(不包括“.”),似乎.getBytes(“UTF-8”)
对输入字符串做了一些意想不到的事情。