0

次の C# メソッドを SQL Server 2014 コードに書き直そうとします。これまでのところ無駄です。

public static string GetHash(string input)
{
    HashAlgorithm hashAlgorithm = new SHA256CryptoServiceProvider();

    byte[] byteValue = System.Text.Encoding.UTF8.GetBytes(input);
    byte[] byteHash = hashAlgorithm.ComputeHash(byteValue);

    return Convert.ToBase64String(byteHash);
}

特に UTF8 へのエンコーディングには問題があります。

助けていただければ幸いです。

4

1 に答える 1

0

GetHash メソッドのエンコーディングを Unicode に変更できない限り、それを行うことはできません。

あなたがそれを行うことができれば、以下はうまくいくはずです

public static string GetHash(string input)
        {
            HashAlgorithm hashAlgorithm = new SHA256CryptoServiceProvider();

            byte[] byteValue = System.Text.Encoding.Unicode.GetBytes(input);
            byte[] byteHash = hashAlgorithm.ComputeHash(byteValue);

            return Convert.ToBase64String(byteHash);
        }

入力 "testing æøå" 出力: Rp/BQKVFVjtWxNL9Oj8VGkiS769ekSVYhE9AzlKnvPw=

DECLARE @Bin VARBINARY(MAX);
set @bin = (select HASHBYTES('SHA2_256',N'testing æøå'))

select CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:variable("@bin")))','VARCHAR(MAX)')

入力 "testing æøå" 出力: Rp/BQKVFVjtWxNL9Oj8VGkiS769ekSVYhE9AzlKnvPw=

于 2016-04-15T12:55:04.840 に答える