【发布时间】:2016-04-20 07:05:32
【问题描述】:
我有一个在 SQL Server 中加密数据的网络应用程序,当我解密数据时,交替字符显示为:�、(char)0 或 \0(取决于您如何看待它)
如果我只是在数据库中加密/解密,那么一切正常。
例子:
SELECT DecryptByKey(Value) FROM Table WHERE TableID=0
Returns: 0x5400450053005400
Should Return: 0x54455354
它在交替字符中添加00,并且不能CONVERT to VARCHAR
DECLARE @T1 VARCHAR(10);SET @T1='TEST';
DECLARE @T2 VARBINARY(MAX); SET @T2 = ENCRYPTBYKEY(Key_GUID('Test_Key'), @T1);
SELECT DecryptByKey(@T2)
Returns: 0x54455354
正确返回二进制数组,并且可以CONVERT to VARCHAR
我这样创建了证书/密钥:
CREATE CERTIFICATE Test_Cert
ENCRYPTION BY PASSWORD = '***************'
WITH SUBJECT = 'TEST CERT',
EXPIRY_DATE = '20160202';
GO
CREATE SYMMETRIC KEY Test_Key
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE Test_Cert
GO
IIS 中的应用程序池设置为允许 32 位应用程序,因为它也在访问 Oracle 服务器并且 dll 需要它。
【问题讨论】:
标签: asp.net sql-server encryption