我有一个使用数据库和带有登录名和密码的用户表的应用程序。密码未加密,因此我搜索了如何对其进行加密。
我使用SQL Server 2017,并且发现了PWDENCRYPT
函数和PWDCOMPARE
。
所以我想更新我的用户表以加密所有密码,然后编辑我的应用程序以使用pwdcompare。
我之前进行过测试,并且有一些我不太了解的行为,除了PWDENCRYPT('password')
或PWDCOMPARE('password',password_hash)
之类的基本用法之外,我在互联网上没有找到示例。
在SQL Server中,写入时:
select PWDENCRYPT('password')
我有加密密码,这里是:
0x02001691959A1D475E3DB65AE8F7E7B70E7929B8EF873F213C7B99DEED82D0E6B35289CB172C1998DDEDE058F9015FA2679EED387E718B4E06EB389223AA152C8793D8BA0CBA
如果我将此答案与密码进行比较,则返回值为1。 但是当我尝试更新表时可能会出错,因为响应是不一样的。
如果我仅尝试更新一个密码:
update test_table set password=PWDENCRYPT(password) where id=1
我有一条分配的行,但是当我进入表test_table时,密码的格式不同:
撷굪才踔韩ᰝ奦�畔ι规㿙⩬츀稉肉맿õ雟脀ꐁ燲턃悂샽冄⁽褜
我认为这很正常,所以我尝试将字符串“ password”与以下内容进行比较:
select PWDCOMPARE('password',撷굪才踔韩ᰝ奦�畔ι规㿙⩬츀稉肉맿õ雟脀ꐁ燲턃悂샽冄⁽褜)
在这里,根据加密的密码,我在''或其他字符周围出现语法错误。
我搜索了原因,但是没有找到用于更新表的特定方法的SQL Server。暂时,我只是测试过要更新表中的一行,但是之后我想更新所有密码以对其进行加密。
感谢您阅读