2

内部データベースに保存されるパスワード ハッシュを生成するために使用される次の 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 でハッシュを複製するのに問題があります。

敬具、

ボクシネーター

4

3 に答える 3

2

Google の最初のリンク :(

http://www.php.net/manual/en/function.hash.php with 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=
于 2013-10-18T19:48:04.720 に答える
0

そのようなものはどうですか?

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

ユーザー提供のパスワードを渡すことも、すでにハッシュされているかどうかを検出するため、すでにハッシュされているパスワードを渡すこともできます。もちろん、これは、#ハッシュ文字で始まるパスワードが許可されていないことを前提としています (そして、以前にキャッチされるでしょう)。

于 2013-10-18T19:44:37.127 に答える
0

パスワードをハッシュするために、現在次のような関数を使用しています。

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

これは、動的ソルト (サイトごと) と固定ソルト ($salt が空の場合、実際には php 定数であるソルトを持つため) を持つ SH512 です。このソリューションは非常に安全です。復号化が非常に難しいハッシュを作成したことは理解しています。

あなたがしたように、この方法で SHA256 を使用してから base64_encode() を使用できます (おそらく役に立たない)。

于 2013-10-18T19:50:32.797 に答える