我有一张桌子:
CREATE TABLE TempHashedValues(
HashedValues varbinary(200)
)
现在,我正在使用加密值插入它,以便以后使用:
Insert into TempHashedValues values ( EncryptByPassPhrase('key', 'SecretEncoded' ))
现在,当我尝试使用相同的密钥解密它们时:
Select TOP 1 DECRYPTBYPASSPHRASE('key',HashedValues) from TempHashedValues
我刚刚收到二进制值,而不是我加密的值!!
我错过了什么?
答案 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