我正在使用以下的quires
Create table UserDetails
(
UserId int primary key identity(1,1),
UserName nvarchar(50) Not Null,
UserContactNumber int Not Null,
UserEmail varchar(50) Not Null,
UserPassword nvarchar(50) Not Null,
UserConfirmPassword nvarchar(50) Not Null
)
Insert into UserDetails
values ('Shefali',36547895,'s.jain@gmail.com',HASHBYTES('MD5','Shefali1234$')
,HASHBYTES('MD5','Shefali1234$'))
结果:
+---+---------+----------+------------------+---------------+---------------+
| 1 | Shefali | 36547895 | s.jain@gmail.com | ꉹ㇒ᆔ唡鈑쳕켆� | ꉹ㇒ᆔ唡鈑쳕켆� |
+---+---------+----------+------------------+---------------+---------------+
答案 0 :(得分:0)
HASHBYTES为MD5 (Microsoft Docs)返回VARBINARY(16)。你所看到的是正确的,你所期待的是什么,但是BINARY(16)会给你一些更好看的东西。您不会尝试从数据库中获取密码,而是在Web服务器上进行哈希并根据哈希值进行测试。
此外,您无需同时存储密码和密码确认。它应该足以在它们被存储之前测试它们是否匹配,可能是在前端的javascript中。
此外,请确保您正在做的是您想要做的事情。 MD5不被视为安全。例如 https://codahale.com/how-to-safely-store-a-password/ 如果您使用bcrypt,可以将其存储在BINARY(60)中,如https://stackoverflow.com/a/5882472/2281968