【问题标题】:A PHP equivalent for a VB.NET password hash function [closed]VB.NET密码哈希函数的PHP等效项[关闭]
【发布时间】:2013-10-27 18:33:30
【问题描述】:

我有以下 Visual Basic .NET 函数,用于生成存储在内部数据库中的密码哈希:

Public Function HashPassword(ByVal Password As String, ByVal Salt As String) As String
    Dim pwd As String = Password & Salt
    Dim hasher As New Security.Cryptography.SHA256Managed()
    Dim pwdb As Byte() = System.Text.Encoding.UTF8.GetBytes(pwd)
    Dim pwdh As Byte() = hasher.ComputeHash(pwdb)
    Return Convert.ToBase64String(pwdh)
End Function

我需要帮助创建与上述函数等效的 PHP:

示例:

Assuming a password string of: warn
A salt value of: i<|Xf":n_y_Yr"Lor`qAA].QK(2C8AJ:Z"\f&TC7bi=Acw_.w|
The returned hash should be: 0Yq3gR09U1GKfFRzmRxdJXK5jSQowHp/YLGA88p0s18=

我无法在 PHP 中复制哈希。

亲切的问候,

发声者

【问题讨论】:

    标签: php vb.net hash passwords sha256


    【解决方案1】:

    谷歌的第一个链接:(

    http://www.php.net/manual/en/function.hash.php 带有 sha256 http://www.php.net/manual/en/function.base64-encode.php

    $pwd = 'warn';
    $salt = 'i<|Xf":n_y_Yr"Lor`qAA].QK(2C8AJ:Z"\f&TC7bi=Acw_.w|';
    $pwd .= $salt;
    $r1 = hash('sha256', $pwd, true); // binary hash
    $r2 = base64_encode($r1); // base64 representation
    echo $r2;
    

    输出

    0Yq3gR09U1GKfFRzmRxdJXK5jSQowHp/YLGA88p0s18=
    

    【讨论】:

    • 我花了 不开玩笑 两个小时来玩弄这个并在 google 上进行研究,但没有运气重现散列。非常感谢您的礼貌!
    • 干得好。你快了一分钟!
    【解决方案2】:

    这样的事情怎么样?

    private static function hash($string) {
        $result = '';
        if (substr($string, 0, 1) == '#')
            $result = $string;
        else {
            $result = '#' . hash('sha256', $string);
        }
        return $result;
    }
    

    您可以只传递用户提供的密码,甚至是已经散列的密码,因为它会检测是否已经散列。当然,这假定以#hash 字符开头的密码是不允许的(并且会在之前被捕获)。

    【讨论】:

      【解决方案3】:

      为了散列密码,我目前使用的函数类似于:

      function hashPassword($str, $salt='786df') {
          hash('sha512', $salt.$str.'7');
      }
      

      这是一个 SH512,带有一个动态盐(每个站点)和一个固定盐(如果 $salt 为空,则有一个盐,实际上是一个 php 常量)。这个解决方案非常安全,我知道它生成的哈希值很难解密。

      和你一样,你可以通过这种方式使用SHA256,然后使用base64_encode()(可能没用)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-14
        • 1970-01-01
        • 2014-10-02
        • 1970-01-01
        • 2016-02-06
        • 2020-11-13
        相关资源
        最近更新 更多