使用EncryptByPassPhrase创建后,DECRYPTBYPASSPHRASE无法工作

3

我有一个表格:

CREATE TABLE TempHashedValues(
HashedValues varbinary(200)
)

现在,我正在使用加密方式将值插入其中,以便稍后可以使用:
Insert into TempHashedValues values ( EncryptByPassPhrase('key', 'SecretEncoded' ))

现在,当我尝试使用相同的密钥进行解密时:
Select TOP 1 DECRYPTBYPASSPHRASE('key',HashedValues) from  TempHashedValues

我只收到了二进制值,没有接收到我加密后的值!!

我错过了什么吗?

1个回答

3
根据这里的说明 http://sqlity.net/en/2530/decryptbypassphrase/, ENCRYPTBYPASSPHRASE返回加密后的值,数据类型为VARBINARY(8000)。该数据类型与例如SQL_VARIANT不同,不携带关于源数据类型的任何信息。因此,DECRYPTBYPASSPHRASE也返回VARBINARY(8000)的值。 你需要进行转换:
Select TOP 1 (CAST(DECRYPTBYPASSPHRASE('key',HashedValues) AS VARCHAR(8000))) from  TempHashedValues

对查询进行了一些小的更改以使其正常工作:从TempHashedValues中选择TOP 1(CAST(DECRYPTBYPASSPHRASE('key',HashedValues)AS VARCHAR(8000)))。 - umbersar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接