在Transact-SQL中生成对称加密密钥并向.NET公开

在Transact-SQL中生成对称加密密钥并向.NET公开,.net,sql-server,cryptography,.net,Sql Server,Cryptography,这是一个相当广泛的问题,但我想知道是否有人有这样做的经验 我需要SQL Server 2008为我生成对称加密密钥,并将其公开给.NET进行加密和解密。我想将密钥临时存储在DB中一段定义的时间,比如一小时,然后生成一个新密钥 这对任何人来说都是可能的吗?非常重要的是,加密/解密是在应用程序层而不是在数据库中完成的 我对加密算法不太挑剔,但越强越好 如有任何指示,我们将不胜感激 干杯, Twibbles第二个。@Edit:我的第一个假设是错误的。当然,SQL server允许创建对称密钥。但它不允

这是一个相当广泛的问题,但我想知道是否有人有这样做的经验

我需要SQL Server 2008为我生成对称加密密钥,并将其公开给.NET进行加密和解密。我想将密钥临时存储在DB中一段定义的时间,比如一小时,然后生成一个新密钥

这对任何人来说都是可能的吗?非常重要的是,加密/解密是在应用程序层而不是在数据库中完成的

我对加密算法不太挑剔,但越强越好

如有任何指示,我们将不胜感激

干杯,
Twibbles第二个。

@Edit:我的第一个假设是错误的。当然,SQL server允许创建对称密钥。但它不允许备份或对密钥数据的任何其他访问。如果您对-f.e.主密钥感到满意,您可以生成此密钥并使用其定期备份(加密或不加密)

您可以通过TSQL导出(备份)密钥。生成和备份可以通过计划任务完成(如果您不在SQLEXPRESS上)

在.NET端,您可以读取保存的文件,并使用您可能拥有的任何工具。不知道生成的密钥是否与常规的.NET en/解密算法兼容

关于安全性:如果密钥是从TSQL加密存储的,那么它可以变得(更)安全。例如,您可以在TSQL中生成证书,与.NET层预共享证书,并使用它传输对称加密密钥


请参阅:

哪些应用程序将使用这些键相互通信?