文本字段的非对称加密

时间:2013-09-07 18:00:14

标签: tsql encryption-asymmetric

我更新了我的问题以反映sql加密而不是asp.net。

我在sql中创建了我的密钥

USE DatabaseName
GO
CREATE ASYMMETRIC KEY MyKey
WITH ALGORITHM = RSA_2048
ENCRYPTION BY PASSWORD = 'Password1'

然后我修改了密钥私钥密码

ALTER ASYMMETRIC KEY MKey
WITH PRIVATE KEY
(ENCRYPTION BY PASSWORD = 'ADifferentPassword',
DECRYPTION BY PASSWORD = 'Password1')

我想知道为什么ENCRYPTION BY PASSWORD是用于解密数据而不是DECRYPTION BY PASSWORD的密码?

然后太过ENCRYPT我真的不需要密码我只需要引用MyKey这是正确的吗?

INSERT dbo.BookSellerBankRouting
(BookSellerID, BankRoutingNBR)
VALUES (22,
EncryptByAsymKey(AsymKey_ID('MyKey'),
'1234567'))

我认为您必须指定要加密的加密密码和要解密的解密密码。

但是当我在下面的语句中使用加密密码时,它会解密数据并且解密密码失败

SELECT CAST(DecryptByAsymKey
( AsymKey_ID('MyKey'),
BankRoutingNBR,
N'ADifferentPassword') as varchar(100)) BankRoutingNBR
FROM dbo.BookSellerBankRouting
WHERE BookSellerID = 22

1 个答案:

答案 0 :(得分:0)

听起来你过于复杂的事情。 SQL Server内置了对加密和用户角色的支持。你最好相信构建它的专业人员知道他们在做什么而不是试图实现你自己的方案。在此处开始阅读有关SQL Server加密的内容:http://technet.microsoft.com/en-us/library/bb510663.aspx