All,
提前抱歉 - 对于以下大多数主题(SQL、ASP),我都是新手。反正...
我有一个非常简单的网络应用程序,要求用户使用用户名和密码登录。
前端创建密码的加盐 SHA1 哈希值,并将其(与用户名一起)发布到 ASP 页面。
该 ASP 页获取数据,调用 SQL Server 数据库中的存储过程,并传递用户名和散列密码;存储过程将信息写入“用户”表。
表中密码列的类型是varbinary。
据我所知,当 ASP 获取密码(password = Request.Form("password"))时,它是一个字符串。
如果我这样创建查询,我可以“欺骗”SQL Server 将其作为 varbinary 处理:
query = "EXEC sp_ save user @username='" 和用户名 & "', @password=0x" & 密码
IOW - 我在密码字符串前面添加了“0x”。
但是,我读到使用参数化查询是更好的做法:
例如: SET objParam = objCommand.CreateParameter("@password",204, 1, 40, 密码)
但是,这会失败,因为参数应该是二进制 (204),但密码是字符串。
那么,如何将“4a5e6a8d521ed487b81c91e131cf27e8dae9b783”这样的字符串转换为 ASP 中的二进制文件?
提前谢谢了!