【问题标题】:Translate java encrypting to php [duplicate]将java加密转换为php [重复]
【发布时间】:2014-03-17 20:31:28
【问题描述】:

我正在尝试在 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 中输入以下 pass:123456789,则哈希为:sha1:625D7360E198F528978A4D061F3420923AF867C5

【问题讨论】:

    标签: java php encryption


    【解决方案1】:

    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() 将为您提供空密码的哈希值。

    【讨论】:

    • 谢谢,这段代码给了我 sha1 哈希:f7c3bc1d808e04732adf679965ccc34ca7ae3441 用于输入 123456789。我需要:sha1:625D7360E198F528978A4D061F3420923AF867C5。
    • 你确定这是“123456789”的哈希值吗?我用 sha1 哈希数据库检查了网站上的哈希,它说输入是“.adgjmptw”(这对于 PHP 版本是正确的)。您可以尝试其他输入并在此处分享结果吗?
    • 有趣的是“.adgjmptw”的字符在ASCII表中相距三步(不包括“.”),看来.getBytes("UTF-8")做了一些意想不到的事情到输入字符串。
    【解决方案2】:

    试试这个:

       <?PHP
            $sPassword  =   "enter-password-here";
            if(!empty($sPassword)) {
                return sprintf("sha1 hash: %s", sha1($sPassword));
            } else {
                return "empty";
            }
        ?>
    

    【讨论】:

    • 因为我们使用“return”,所以我相信这段代码是用户定义的function()
    • 谢谢,这段代码给了我 sha1 哈希:f7c3bc1d808e04732adf679965ccc34ca7ae3441 用于输入 123456789。我需要:sha1:625D7360E198F528978A4D061F3420923AF867C5。
    猜你喜欢
    • 1970-01-01
    • 2011-02-26
    • 2021-01-30
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多