我有以下sql查询
SELECT CONVERT(VARCHAR(254), HASHBYTES('SHA2_512', CONVERT(NVARCHAR(24), '2020-05-27 00:00:00.000', 127)), 2)
生成哈希值的
E8FD9193FA939608DF127AC73428EB39F66CB6F44440083EF269A1F72176BF7BF80C3EB26BA43277E6F9CFFB4F7AFC6AA83AF527BEDF887E4EE06BA492CAD3BE
我想在python中用
hashlib.sha512('2020-05-27 00:00:00.000'.encode()).hexdigest().upper()
但我明白了
FE48F900755B4C19039E6886148566DF93730A7887771C7A72260BB4E784080CDDA6C70C428A6EEFED658846F45F3D153C6B6472C04508B9242C14C61BD1C1BE
作为哈希值。当我使用varchar而不是nvarchar时,我得到了正确的哈希值。如何在python中重现nvarchar的巴哈维奥?
2条答案
按热度按时间vdgimpew1#
nvarchar编码为utf-16le。将其添加到
创建正确的哈希值。
ltskdhd12#
nvarchar和默认python字符串都应该是unicode和多字节字符。但是,还有两个子类型。大端和小端的区别。low endian会为你工作的。使用“utf-16le”编码获得您想要的答案。