从 C# 到 SQL 的散列和转换为 Base64
Hashing and Converting To Base64 from C# to SQL
我尝试将以下 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的编码让我很头疼
感谢任何帮助。
除非您可以将 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=
我尝试将以下 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的编码让我很头疼
感谢任何帮助。
除非您可以将 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=