将VARBINARY的字符串表示形式转换为VARBINARY值

时间:2019-01-16 19:28:36

标签: sql-server encryption

我需要使用VARBINARY值的字符串表示形式并将其转换回实际的VARBINARY值,但是如何?

我想获取以下查询的结果并将其转换回VARBINARY值,以便可以将其解密为原始值?

CREATE TABLE Table1 (
    FirstName varchar(32) NOT NULL,
    LastName varchar(32) NOT NULL,
    Social varbinary(128) NOT NULL)

OPEN SYMMETRIC KEY KEY_NAME
DECRYPTION BY CERTIFICATE CERT

INSERT INTO Table1(FirstName,LastName,Social)
VALUES ('John','Doe',ENCRYPTBYKEY(Key_Guid('KEY_NAME'),'123-45-6789'))

SELECT CONVERT(varchar(max), social,1) Social
FROM Table1
WHERE LastName='Doe'

1 个答案:

答案 0 :(得分:2)

因此,通常来说,您将使用convert来回varbinaryvarchar。您需要使用2作为样式,而不是1,以获取字符串表示形式。如果要进行文字转换,请使用默认值0。

DB FIDDLE

declare @v varbinary(128) = (select cast('ThisIsMyPassword' as varbinary(128)))

select
    @v as Val
    ,convert(varchar(max),@v,2) as String
    ,convert(varchar(max),@v,0) as Literal

See the docs on when to use the styles here