Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将java加密转换为php_Java_Php_Encryption - Fatal编程技术网

将java加密转换为php

将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

我试图用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
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”)
对输入字符串做了一些意想不到的事情。