【问题标题】:asp.net Generating RSA public key pair without a key storeasp.net 在没有密钥存储的情况下生成 RSA 公钥对
【发布时间】:2009-04-08 07:38:47
【问题描述】:

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

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

这在我的托管服务提供商中不起作用,因为我无权访问我的机器商店。

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

【问题讨论】:

    标签: asp.net security


    【解决方案1】:

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

    “救命!我们该怎么办??在谷歌上搜索了一下,然后给我们(优秀的)网络托管服务提供商 Liquid Six 发了一封快速的电子邮件,发现其原因在于 Windows crypt API 的深处,RSACryptoServiceProvider 在该 API 上是基于. 本质上, 允许脚本加载自己的私钥会损害 Windows 密钥存储的安全性, 因此所有明智的 Web 托管服务提供商都将其关闭, 以免流氓脚本窃取/覆盖托管服务提供商自己的私钥. 这打击我是 Windows crypt API 中的一个主要问题,但你去吧。我想我们被它困住了。

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

    经过一两天的缝合和修补,EZRSA 诞生了。 EZRSA 几乎完成了 RSACryptoServiceProvider 可以做的所有事情,但完全在托管代码中,并且不使用 Windows crypt API。因此,无论您的网络托管服务提供商对您施加何种信任级别(这是我们所需要的),它都可以在任何地方运行。”

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多