2012-01-09 94 views
1

我最近发现可以使用aspnet_regiis加密web.config的某些部分。我们希望使用单独的密钥对存储在数据库中的数据进行进一步加密,但使用系统用于加密web.config的相同密钥存储该密钥。有没有办法从C#/ ASP.Net内部以编程方式访问?使用aspnet_regiis用于加密web.config以编程加密数据的相同密钥

基本上,场景是:我们在web.config中的连接字符串将使用ASPNET_REGIIS进行加密(RSA目前提供,直到我能得到AES提供商合作)。然后,我们需要存储在初始数据库(包括用于初始数据库的可写连接)中的附加连接字符串信息(用于其他数据库),该信息使用不同的密钥加密,但该密钥将存储在初始数据库中并使用web.config使用的初始加密。

否则,我将不得不为web.config中使用的算法存储一个密钥和IV,并且我认为使用它用于加密网络的Windows安全“钥匙串”会更安全.config首先。

+0

使用您不拥有的RSA私钥很少是一种理想的做法。 – 2012-01-09 01:13:53

回答

0

首先,我不确定您是否可以获取aspnet_setreg使用的加密密钥。

其次,我不认为使用特定的机器密钥数据库中的数据进行加密是一个非常不错的主意。如果数据库中的数据发生故障,并且数据库必须从备份恢复到另一台机器,会发生什么情况?

我认为你会好得多使用可逆加密算法(即Rinjadel)使用存储在用来提取数据编译应用的关键和IV。

如果其他应用程序需要连接字符串,您可以通过WCF服务使用Windows安全凭证集中访问它们。