patternsqlMinor
SQL Server hashbytes seed
Viewed 0 times
sqlhashbytesseedserver
Problem
I'm trying to compare hashes generated by SQL Server
HASHBYTES() with hashes generated with python's hash() (or hashlib) function. For both functions, the same algorithm is used. The problem is I don't know SQL's seed so I cant generate the same output using python. Is there a way to set SQL's seed? I wasn't able to find any information related to it.Solution
I am able to get identical results between python and T-SQL code with the MD5 algorithm. For example, the
Example T-SQL code:
Example Python code:
I'm not an encryption expert, but it's not clear to me what you mean by "SQL's seed". The MD5 algorithm doesn't appear to call for a random number to be added by the implementer. Such an algorithm would be quite inconvenient because it would result in the same problem that you're running into right now: different implementations of the same hashing algorithm would give different results for the same input.
NO COLLUSION string hashes to 0x5CA1A58C070F24EF1D4D2900E5727F37 on both platforms.Example T-SQL code:
SELECT HASHBYTES('MD5', 'NO COLLUSION');Example Python code:
import hashlib
result = hashlib.md5(b'NO COLLUSION')
print(result.hexdigest())I'm not an encryption expert, but it's not clear to me what you mean by "SQL's seed". The MD5 algorithm doesn't appear to call for a random number to be added by the implementer. Such an algorithm would be quite inconvenient because it would result in the same problem that you're running into right now: different implementations of the same hashing algorithm would give different results for the same input.
Code Snippets
SELECT HASHBYTES('MD5', 'NO COLLUSION');import hashlib
result = hashlib.md5(b'NO COLLUSION')
print(result.hexdigest())Context
StackExchange Database Administrators Q#276018, answer score: 6
Revisions (0)
No revisions yet.