3

我正在尝试解密密钥,它返回空值。

--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?或者有哪些可能的陷阱或需要检查的东西?

4

2 回答 2

3

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

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

于 2013-11-25T16:49:15.757 回答
2

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

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

于 2013-11-25T13:16:58.720 回答