我使用服务器端散列来传输密码,然后在数据库中运行 PBKDF2 来存储散列密码 + 盐组合。
散列nvarchar(max)
和@variable
持有相同值的HASHBYTES()
函数会产生不同的结果。
DECLARE @hash NVARCHAR(MAX) = 'password5baa61e4c9b93f3f0682250b6'
SELECT HASHBYTES('SHA1', 'password5baa61e4c9b93f3f0682250b6') AS NVARCHAR_INPUT,
HASHBYTES('SHA1', @hash) AS VARIABLE_INPUT
Run Code Online (Sandbox Code Playgroud)
产生以下结果:
NVARCHAR_INPUT | VARIABLE_INPUT
0xA03BEF0E3EC96CC7C413C6646D3FEC6174DA530F | 0x74B55C42E1E0AB5C5CDF10B28567590B240355C3
Run Code Online (Sandbox Code Playgroud)
这是 SQL Server 2012。这个特定的数据库正在运行 SQL Server Express,所以我也很好奇这个问题是否与版本无关。
我正在尝试调试一个应用程序,我想在处理代码之前排除数据库错误。
我知道哪个存储过程负责处理我正在查看的数据,但是在此数据库上没有设置日志记录或任何跟踪。有没有办法使用现有的系统日志恢复传递给该过程的参数?
我看:
dm_exec_procedure_stats
和fn_dblog
,但他们似乎并没有把我需要什么。
我正在设置日志记录。