我正在尝试解密,并且返回null。
--CREATE MASTER KEY ENCRYPTION
--BY PASSWORD = 'Password1'
--CREATE CERTIFICATE MyCert
--WITH SUBJECT = 'MyCert'
--CREATE SYMMETRIC KEY MyKey
--WITH ALGORITHM = TRIPLE_DES ENCRYPTION
--BY CERTIFICATE MyKey
OPEN SYMMETRIC KEY MyKey DECRYPTION
BY CERTIFICATE MyCert;
INSERT INTO sometable (ENCRYPTBYKEY(KEY_GUID('MyKey'),'12345'));
CLOSE SYMMETRIC KEY MyKey;
OPEN SYMMETRIC KEY MyKey DECRYPTION
BY CERTIFICATE MyCert;
SELECT
CONVERT(VARCHAR(50), DECRYPTBYKEY(some_column))
FROM sometable;
CLOSE SYMMETRIC KEY MyKey;
该列定义为varbinary(256)。
结果为null。如何更改此项以获取解密值而不是null?或者有哪些可能的缺陷或要检查的事情?
答案 0 :(得分:2)
使用我的示例sometable
,此脚本运行良好。
所以请包括你的表定义。
然后我想你应该测试IF KEY_GUID('MyKey')IS NOT NULL ..
答案 1 :(得分:2)
问题是表中的列不够大,无法存储数据。所以它没有错误地截断。
我增加了列大小,问题得到了解决。