DecryptByKey返回null SQL Server 2012

时间:2013-10-19 16:27:55

标签: sql-server-2012 encryption-symmetric

我正在尝试解密,并且返回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?或者有哪些可能的缺陷或要检查的事情?

2 个答案:

答案 0 :(得分:2)

使用我的示例sometable,此脚本运行良好。 所以请包括你的表定义。

然后我想你应该测试IF KEY_GUID('MyKey')IS NOT NULL ..

答案 1 :(得分:2)

问题是表中的列不够大,无法存储数据。所以它没有错误地截断。

我增加了列大小,问题得到了解决。