Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Hashing von mehr als 8000 Bytes in SQL Server

Sie könnten eine SQL CLR-Funktion schreiben:

[Microsoft.SqlServer.Server.SqlFunction]
public static SqlBinary BigHashBytes(SqlString algorithm, SqlString data)
{
    var algo = HashAlgorithm.Create(algorithm.Value);

    var bytes = Encoding.UTF8.GetBytes(data.Value);

    return new SqlBinary(algo.ComputeHash(bytes));
}

Und dann kann es in SQL so aufgerufen werden:

--these return the same value
select HASHBYTES('md5', 'test stuff')
select dbo.BigHashBytes('md5', 'test stuff')

Die BigHashBytes ist nur nötig, wenn die Länge über 8k wäre.