nel mio database SQL ho,Hash è diverso in SQL e C#?
DECLARE @InputString nvarchar(15) ='pass'
DECLARE @InputSalt nvarchar(36) = 'FC94C37C-03A3-49A3-9B9F-D4A82E708618'
DECLARE @HashThis nvarchar(100)
Declare @BinaryHash varbinary(max)
set @HashThis = @InputString + @InputSalt
set @BinaryHash= HASHBYTES('SHA1', @HashThis)
SELECT CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:variable("@BinaryHash")))', 'VARCHAR(MAX)')
e C# che ho,
public static string HashString(string cleartext)
{
byte[] clearBytes = System.Text.Encoding.UTF8.GetBytes(cleartext);
return HashBytes(clearBytes);
}
public static string HashBytes(byte[] clearBytes)
{
var hasher = System.Security.Cryptography.SHA1.Create();
byte[] hashBytes = hasher.ComputeHash(clearBytes);
string hash = System.Convert.ToBase64String(hashBytes);
hasher.Clear();
return hash;
}
HashString("passFC94C37C-03A3-49A3-9B9F-D4A82E708618")
Ma l'hash è diverso?
C# Output: S55Nz1lyGweoJEHWcC6zFxJDKWQ=
SQL Output: 4jqyC1pLJ0hW+AMNk8GOWCC99KY=
https://dotnetfiddle.net/4bwAtm
Qual è l'output di entrambi? – CodeCaster
@CodeCaster, post upated – user960567
Il valore C# (S55Nz1lyGweoJEHWcCzzzxx6DJQQ =) sembra essere quello corretto per l'input, è necessario correggere il codice SQL. –