我有一张桌子:
CREATE TABLE TempHashedValues(
HashedValues varbinary(200)
)
现在,我将使用插入加密的值,以便以后使用:
Insert into TempHashedValues values ( EncryptByPassPhrase('key', 'SecretEncoded' ))
现在,当我尝试使用相同的密钥解密它们时:
Select TOP 1 DECRYPTBYPASSPHRASE('key',HashedValues) from TempHashedValues
我只是返回二进制值,而不是我加密的值!
我想念什么?
最佳答案
如此处所述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