DecryptByKey这个返回空值的SQL Server 2012

问题描述 投票:2回答:2

我想DecryptByKey这个和它返回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)。

其结果是空。如何改变这种以获得解密的值,而不是空?或者有什么是一些可能的陷阱或事物的检查?

sql-server-2012 encryption-symmetric
2个回答
2
投票

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

我增加了柱尺寸和问题就解决了。


2
投票

随着我的样本sometable此脚本效果很好。所以,请注明您的表定义。

然后,我想你应该测试是否KEY_GUID( '的myKey')IS NOT NULL ..

© www.soinside.com 2019 - 2024. All rights reserved.