一尘不染

使用EncryptByPassPhrase创建DECRYPTBYPASSPHRASE后无法正常工作

sql

我有一张桌子:

CREATE TABLE TempHashedValues(
HashedValues varbinary(200)
)

现在,我正在使用插入加密值,以便以后可以使用:

Insert into TempHashedValues values ( EncryptByPassPhrase('key', 'SecretEncoded' ))

现在,当我尝试使用相同的密钥解密它们时:

Select TOP 1 DECRYPTBYPASSPHRASE('key',HashedValues) from  TempHashedValues

我只是找回二进制值,而不是我加密的值!

我想念什么?


阅读 186

收藏
2021-03-08

共1个答案

一尘不染

如此处所述,http:
ENCRYPTBYPASSPHRASE
//sqlity.net/zh/2530/decryptbypassphrase/将加密后的值作为VARBINARY(8000)数据类型返回。除了例如SQL_VARIANT之外,该数据类型不携带有关原始数据类型的任何信息。因此,DECRYPTBYPASSPHRASE还会返回一个VARBINARY(8000)值。您必须强制转换:

Select TOP 1 (CAST(DECRYPTBYPASSPHRASE('key',HashedValues) AS VARCHAR(8000))) from  TempHashedValues
2021-03-08