0

我正在尝试在 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

4

1 回答 1

0

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

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

顺便说一句,我强烈建议您支持 Unicode(所以NVARCHAR而不是VARCHAR)。除非您想看起来不认真对待用户的密码安全。

于 2013-11-11T01:38:41.537 回答