存储ENCRYPTBYPASSPHRASE()的值

时间:2018-12-17 08:48:49

标签: sql-server encryption password-encryption sql-server-2017

我正在SQL Server Management Studio 2017中使用以下查询。

SELECT ENCRYPTBYPASSPHRASE('xxyy','test@123')

运行上面的语句时,它返回了一个加密的密码,例如0x01000000EA686E7D1AED8C501B193A2F655368FC3EABA009082C90F58987DD0487833C62

我想使用存储过程将其存储在包含NVARCHAR(MAX)字段的表中,但是插入时会出现空白值而不是加密密码。

我使用了print语句来获取SP中此函数发出的值。它返回了一些不可读的字符,如下所示。

됏㬷病譽快 Image

如何正确使用ENCRYPTBYPASSPHRASE()以便将返回值插入表字段中。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下Sql语句

CREATE TABLE #TempPassword (encPassword varbinary(250))
declare @encPwd varbinary(250)
set @encPwd = (SELECT ENCRYPTBYPASSPHRASE('xxyy','test@123'))

insert into #TempPassword values (@encPwd)
select * from #TempPassword

现在插入后的输出如下所示

encPassword
0x0100000023C4E9BFBC0F4319735ED2F0C76C2D857C114D96867711F1EE290AB2E7511961