0

私はASPにこのコードを持っています:

Public Function ComputeCredentialHash(ByVal timestamp As DateTime, ByVal id As String, ByVal authKey As String) As String
    Dim sig As String = timestamp.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ") & id & authKey
    Dim sigdata As Byte() = System.Text.Encoding.ASCII.GetBytes(sig)
    Dim md5 As System.Security.Cryptography.MD5 = New System.Security.Cryptography.MD5CryptoServiceProvider()
    Dim md5Hash As String = System.Convert.ToBase64String(md5.ComputeHash(sigdata))
    Return md5Hash
End Function

そして、同じことをするPHP関数を書く必要があります。これまでのところ:

function ComputeCredentialHash ($timestamp, $id, $authKey) {
    $sigData = mb_convert_encoding($timestamp.$id.$authKey, "ASCII", "auto");
    $md5 = md5($sigData);
    $md5Hash = base64_encode($md5);
    echo "ComputeCredentialHash => $md5Hash<br/>Sig Data => $sigData<br/>MD5 Sig => $md5<br/>";
    return $md5Hash;
}

しかし、これは機能しません。それは関数によるものASCII.GetBytesだと思いますが、それが何をするのかよくわからないので、どうやって変換するのかよくわかりません。バイト数を返すだけのように見えますが、それは私にはあまり意味がありません(なぜ、ハッシュを作成するのに非常に一般的なものが得られるのでしょうか)。とにかく、誰かが助けてくれるなら、私はそれをいただければ幸いです。

4

1 に答える 1

1

「MD5クラスのComputeHashメソッドは、ハッシュを16バイトの配列として返します一部のMD5実装は、32文字の16進形式のハッシュを生成することに注意してください。」– PHPのmd5()は後者を実行するため、ASPコードが生成するのと同じデータ構造が必要な場合は、出力を再フォーマットする必要がある場合があります。

于 2013-03-25T15:03:22.590 に答える