asp.net生成没有密钥库的RSA公钥对

时间:2009-04-08 07:38:47

标签: asp.net security

我必须在Windows服务和asp.net网站之间进行一些安全通信。在asp.net网站上,我生成一个密钥对,将我的公钥发送到我的Windows服务,然后从我的服务接收加密消息并使用asp.net解密。

第一个问题是这个.. user profile is not created in asp.net所以我必须使用RSAParams.Flags = CspProviderFlags.UseMachineKeyStore;。

这在我的托管服务提供商中无效,因为我无法访问我的机器商店。

我认为我的解决方案是在内存中生成密钥对而从不使用密钥库,这可能吗?

1 个答案:

答案 0 :(得分:2)

结帐http://www.codeproject.com/KB/security/EZRSA.aspx摘自文章:

“帮助!我们做什么?谷歌搜索周围的一些,以及向我们(优秀的)Web托管提供商Liquid Six发送的一封电子邮件,发现其原因在于深入了解Windows加密API,RSACryptoServiceProvider基本上,允许脚本加载自己的私钥会损害Windows密钥库的安全性,所以所有明智的Web托管服务提供商都会关闭它,以免恶意脚本窃取/覆盖托管服务提供商自己的私钥。我是Windows crypt API中的一个主要问题但是你去了。我想我们一直坚持下去。

更多Googling发现了两个重要资源:Chew Keong TAN最优秀的BigInteger类和一些LGPL'C'代码,用于执行必要的计算和来自XySSL的PKCS#1封装(最初由Christopher Devine编写)。这些资源对我来说特别有用,因为(a)操纵数百位数字的能力是专业领域,(b)我讨厌ASN.1(构建PKCS#1格式)。计算本身看似简单。

一天或两天缝合和打补丁,EZRSA诞生了。 EZRSA几乎可以完成RSACryptoServiceProvider可以完成的所有操作,但完全使用托管代码,而不使用Windows crypt API。因此,无论您的Web托管服务提供商对您施加什么样的信任级别(这都是我们需要的),它都可以在任何地方运行。“

希望它有所帮助!