EncryptByPassPhrase返回特殊字符

时间:2015-08-31 16:54:41

标签: sql sql-server encryption character-encoding

我试图在SQL Server 2012中使用EncryptByPassPhrase进行加密,但是当我执行此功能时,我会得到像"öK{8+¨´¡¿" ...这样的值,也许有人可以帮助我?

这是我正在使用的代码:

IF(@MODE = 1)
BEGIN
    SET @RESUL = convert(varchar(100),ENCRYPTBYPASSPHRASE('Prueba','200000'))<br>
    PRINT 'ENCRYPT'+ (CAST(@RESUL AS varchar(20)))
END

1 个答案:

答案 0 :(得分:0)

让我们分解吧。根据文档,ENCRYPTBYPASSPHRASE()的输出是varbinary。你将CONVERT改为{var}。根据转换文档,如果您没有提供样式,请转换&#34;将ASCII字符转换为二进制字节或将二进制字节转换为ASCII字符。每个字符或字节按1:1转换。&#34;。如果您正在寻找更像0x123abc的内容,请将其他参数(1)传递给CONVERT以使其成功。

所有这一切,除非你需要一个人能够转录加密的内容(或以其他方式解释它),我将其留在varbinary表示中。解密方面的错误空间较小。具体做法是:

DECLARE @resul VARBINARY(8000);
SET @RESUL = ENCRYPTBYPASSPHRASE('Prueba','200000');
SELECT CAST(DECRYPTBYPASSPHRASE('Prueba', @resul) AS VARCHAR(50));