我有以下查询
UPDATE mytable
SET col1 = ENCRYPTBYPASSPHRASE ('Key', col2)
FROM mytable
当我使用
解密时SELECT CONVERT(VARCHAR(20), DECRYPTBYPASSPHRASE ('Key', col1))
FROM mytable
返回的结果只是第一个字符,例如,如果字段包含“Computer”,则结果只是“C”。
答案 0 :(得分:5)
col2
可能是nvarchar而不是varchar。尝试
SELECT CONVERT(NVARCHAR(20), DECRYPTBYPASSPHRASE ('Key', col1))
FROM mytable
在nvarchar中,标准ASCII字母的代码点与ASCII相同,但用0x00
字节填充。
当你将它转换为varchar时,它被视为终止字符串的空字符。
答案 1 :(得分:1)
经过调查我遇到了很多问题,所以我会发布我遇到的内容,所以任何人都可以从中受益。
希望这可以帮助那里的任何人!
答案 2 :(得分:0)
将CONVERT
与您要加密更新的值的数据类型和大小一起使用。
看来EncryptByKey
无法按照列模式正确识别数据。
尝试如下
ENCRYPTBYKEY(KEY_GUID('<Key Name>'), CONVERT(varchar(20),col1))