在EncryptByPassPhrase之后正确解密密码

时间:2013-11-11 01:36:32

标签: sql-server encryption

我正在尝试在SQL Server 2012中加密然后解密文本。我期待第三张打印件能够让我回复customer_abc

DECLARE 
@var_customer VARCHAR(25),
@var_password VARBINARY(8000)

SET @var_customer = 'customer_abc'

SET @var_password = EncryptByPassPhrase('secret', @var_customer )

print @var_customer
print @var_password
print DecryptByPassPhrase('secret', @var_password )

结果:

  

customer_abc   
0x01000000398F9A0D3FE98D29E8F56D6B1908EA87C08706786319DD1BBB3F150FFC5B7F3C   
0x637573746F6D65725F616263

1 个答案:

答案 0 :(得分:0)

您的代码很好,除了您必须显式转换以获取实际的varchar值。 Decrypt函数的输出仍为二进制。将最后一行更改为:

PRINT CONVERT(VARCHAR(25),DecryptByPassPhrase('secret', @var_password));

顺便说一句,我强烈建议您支持Unicode(所以NVARCHAR代替VARCHAR)。除非你想看起来像是不接受你的用户'密码安全认真。