这很标准 - 对于盐来说,使用guid是可以的。盐的作用是防止彩虹攻击,任何随机的值(即使不随机,则至少要不同)对于每个用户都可以起到作用。
V4 GUID使用后期算法,这是一个伪随机数。这些具有相同位置上的“4”,例如{38a52be4-9352-453e-af97-5c3b448652f0}。更具体地说,在第一种情况下,“data3”位模式将为0001xxxxxxxxxxxx,而在第二种情况下,则为0100xxxxxxxxxxxx。对WinAPI GUID生成器的密码分析显示,由于V4 GUID序列是伪随机的,因此在给定初始状态的情况下,可以预测由函数UuidCreate返回的下一个250,000个GUID。这就是为什么GUID不应用于密码学,例如作为随机密钥。
如描述所述,机制的工作方式不清楚 - 我假设userid
字段包含生成的GUID(否则我不知道如何检索它进行比较)。
有不同类型的GUID,并非所有GUID都是随机的。但是,对于密码加盐,实际上并不需要随机性。总的来说,您的方法看起来很好,尽管您可以考虑多次执行哈希({{link2:“密钥强化”}})以进一步提高安全性。
为什么你在不理解nonce的情况下要重新发明登录功能?
根据评论中的新细节更新。对于使用SQL Server与Windows GUI应用程序交互的认证选择我会从以下入手: