我想使用加密来保护数据库中的敏感数据。我已经使用AES_256算法使用对称密钥和证书对SQL数据库中的数据进行了加密。现在的问题是,我不知道如何处理ASP.NET应用程序中的加密/解密部分。我可以从用户那里收到一个字符串,并且应该能够解密该字符串并检查它是否等于数据库中的某个加密值。我得到了钥匙
SELECT KEY_GUID('KeyName')
我的问题是如何通过使用此密钥来处理我的asp应用程序中的解密部分。我试图使用它,但是它不起作用。
DECLARE @KeyName SYSNAME = 'keyName'
IF NOT EXISTS (SELECT * FROM sys.openkeys WHERE key_name = @KeyName)
BEGIN
OPEN SYMMETRIC KEY keyName DECRYPTION BY CERTIFICATE certificateName;
END
DECLARE @WhatToEncrypt VARCHAR(400) = 'Something To Encrypt can be binary or character'
DECLARE @EncryptedBinary VARBINARY(MAX)
SET @EncryptedBinary = ENCRYPTBYKEY(KEY_GUID(@KeyName),@WhatToEncrypt)
DECLARE @DecryptedBinary VARBINARY(MAX)
SET @DecryptedBinary = DECRYPTBYKEY(@EncryptedBinary)
SELECT @WhatToEncrypt as Original, CAST(@DecryptedBinary AS VARCHAR(400)) as EncryptedThenDecrypted
--may want to add some logic to see if it was open and leave it open
CLOSE SYMMETRIC KEY keyName
当使用您描述的DB Encryption技术时,需要在SQL方面而不是ASP.Net方面进行加密和解密。因此,要在C#中实现,您基本上必须传递适用的SQL语句,就像执行存储过程之类。
我建议您使用存储过程来打开和关闭键,然后简单地使用函数,ENCRYPTBYKEY
并DECRYPTBYKEY
根据需要比较值等。
还要注意,两个加密功能也可以像盐一样传递验证数据。
ENCRYPTBYKEY
- https://msdn.microsoft.com/en-us/library/ms174361.aspx
DECRYPTBYKEY
- https://msdn.microsoft.com/en-us/library/ms181860.aspx
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句