2016-04-15 25 views
0

次のC#メソッドをSQL Server 2014コードに書き直そうとしています。今のところ役に立たない。C#からSQLへのBase64へのハッシュ変換と変換

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へのエンコードは私に問題をもたらします。

何か助けていただきありがとうございます。

+1

はい - SQL Server **は** UTF-8をサポートしていないため、UTF-8にエンコードすると問題が発生します。 –

答えて

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); 
     } 

入力 "テストæøå" 出力:ルピア/ 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)') 

入力 "テストæøå" 出力:ルピア/ BQKVFVjtWxNL9Oj8VGkiS769ekSVYhE9AzlKnvPw =

+0

ありがとうございました。これは私が最後にやったことです。 – rudimenter