我正在尝试从Python 3和SQL中生成相同的MD5代码,但我总是得到不同的结果。
使用此唯一标识符
使用此唯一标识符
f033b004-eb80-412d-9773-f4f06bb994c1
。SELECT HASHBYTES('MD5', 'f033b004-eb80-412d-9773-f4f06bb994c1')
结果:0x9BCE8D23CAC76AF4F61C04673CDD0081
然后我进行了那个计算。
SELECT ABS(HASHBYTES('MD5', 'f033b004-eb80-412d-9773-f4f06bb994c1') % 10)
结果: 5
现在我使用Python的 hashlib
库
import hashlib
m = hashlib.md5('f033b004-eb80-412d-9773-f4f06bb994c1'.encode() )
m.digest(), m.hexdigest()
结果:b'\x9b\xce\x8d#\xca\xc7j\xf4\xf6\x1c\x04g<\xdd\x00\x81', '9bce8d23cac76af4f61c04673cdd0081'
然后我进行相同的计算
int.from_bytes( b'\x9b\xce\x8d#\xca\xc7j\xf4\xf6\x1c\x04g<\xdd\x00\x81',
byteorder='big',
signed=False )%10
结果:9
有人知道如何从Python代码中获得与SQL Server相同的结果吗?
bytes
转换为int
并取模。而在 SQL Server 上,您正在对HASHBYTES
的输出进行取模 - 这是一个VARBINARY
。您确定VARBINARY
的模与转换为整数的值的模相同吗? - snakecharmerb