2016-04-15 7 views
0

Ich versuche, die folgende C# -Methode in SQL Server 2014-Code umzuschreiben. Bis jetzt ohne Erfolg.Hashing und Konvertierung von Base64 von C# zu SQL

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

Vor allem die Codierung zu UTF8 gibt mir Ärger.

Ich schätze jede Hilfe.

+1

Ja - die Codierung nach UTF-8 verursacht Probleme, da SQL Server ** nicht unterstützt ** UTF-8 ... –

Antwort

0

Sie werden es nicht können, es sei denn, Sie können die Codierung Ihrer GetHash-Methode in Unicode ändern.

Wenn Sie in der Lage sind, das zu tun, sollte die folgende Arbeit

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

Input "Test AEOA" Ausgang: 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)') 

Input "Test AEOA" Ausgang: Rp/BQKVFVjtWxNL9Oj8VGkiS769ekSVYhE9AzlKnvPw =

+0

Vielen Dank. Das habe ich am Ende gemacht. – rudimenter