我正在尝试使用登录/注销功能创建网站,并计划正确散列和腌制密码。然而,我面临的问题是我如何将密码存储在数据库中。我知道我需要在数据库中存储散列+密码(不是纯文本或纯文本加密),但我不知道如何在技术上将二进制数据插入到数据库中。如何将散列存储在使用C#的SQL Server数据库中?
在我的早期尝试中,我可以在数据库中获取数据的唯一方法是将二进制数据转换为base64字符串并插入到varchar
密码字段中,但有些事情告诉我这不是正确的方法去做吧。
数据库中的密码字段当前是varchar
,但据我所知,哈希密码是二进制的。所以即使我将密码字段改为二进制对象,我仍然不知道如何实际插入它!
如果我没有任何意义,请要求澄清,我会尽快与您联系。
散列可以是一个varchar ...它不必是二进制的,但出于好奇心你使用的has函数是什么? – hackartist 2012-02-12 21:25:33
为什么你不想使用base64?这很简单,数据足够小,不用担心大小。 – 2012-02-12 21:31:32
Base64是最安全的方式,它将散列以可读的形式存在。将腌制散列存储为纯文本没有任何问题;这就是存储散列而不是密码的全部目的。 – Douglas 2012-02-12 21:34:37