使用EncryptByPassPhrase创建DECRYPTBYPASSPHRASE后,DECRYPTBYPASSPHRASE无效

时间:2017-04-10 03:59:35

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

我有一张桌子:

CREATE TABLE TempHashedValues(
HashedValues varbinary(200)
)

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

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

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

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

我刚刚收到二进制值,而不是我加密的值!!

我错过了什么?

1 个答案:

答案 0 :(得分: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