我正在为未来的项目做一些研究,它需要对一些数据进行加密。
在我今天的研究中,我注意到有许多不同的加密算法(包括 AES、Triple-DES、X-DES 等),我希望使用 SQL-Server 中的一种算法(2008r2 express probs),你会如何推荐这样做,比如最佳实践等?
我打算做以下事情:
-- Create the master key.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Som3Rand0m!3y?na'
-- Create the cert.
CREATE CERTIFICATE someCert WITH SUBJECT = 'c3p009xFR?'
-- Create Symmetric Key
CREATE SYMMETRIC KEY someSymmetricKey WITH ALGORITHM = TRIPLE_DES ENCRYPTION BY CERTIFICATE someCert
并以下列方式使用它:
declare @sql varchar(8000)
set @sql = 'OPEN SYMMETRIC KEY someSymmetricKey DECRYPTION BY CERTIFICATE someCert '
exec (@sql)
-- Check the table
SELECT col1, Convert(varchar(max), DECRYPTBYKEY(col2)) as col2
FROM myTable
-- dont forget to close the symmetric key again afterwards.
CLOSE SYMMETRIC KEY someSymmetricKey
我想这是正确的方法(我很久以前读过它并保存了一个例子,所以只需仔细检查:])?
此外,使用不同的加密算法之间是否真的存在任何性能差异(或安全差异,比如一个比另一个更容易破解)?<<- 这是我真正想要了解/最重要的一个。
最后,如果我将数据库移动到不同的服务器,我想我可以以相同的方式重新创建密钥/证书,我将能够取回数据等?
任何好的博客文章/链接/白皮书将不胜感激:)(我读过的大部分内容都非常糟糕)
感谢阅读:D