问题标签 [rsacryptoserviceprovider]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4924 浏览

c# - RSA_sign 和 RSACryptoProvider.VerifySignature

我正在尝试加快速度,了解如何获取一些使用 OpenSSL 进行加密的代码,以便使用 .NET 中可用的 Microsoft 加密提供程序与我用 C# 编写的另一个程序很好地配合。

更重要的是,我试图让 C# 程序验证 OpenSSL 代码生成的 RSA 消息签名。生成签名的代码如下所示:

在 C# 中,我会执行以下操作:

  • 将对方的公钥导入RSACryptoServiceProvider对象
  • 接收消息和它的签名
  • 尝试验证签名

我已经完成了前两部分(我已经验证了公钥是否正确加载,因为我设法将 RSA 加密文本从 C# 代码发送到 C 中的 OpenSSL 代码并成功解密)

为了验证 C# 中的签名,我尝试使用 RSACryptoServiceProvider 的 VerifySignature 方法,但这不起作用。在互联网上挖掘时,我只能找到一些模糊的信息,指出 .NET 使用与 OpenSSL 不同的方法生成签名。那么,有人知道如何做到这一点吗?

编辑

既然有请求,这里是 C# 方面的事情..

0 投票
2 回答
47713 浏览

asp.net - 无法打开 RSA 密钥容器

我一直在运行 XP home 的旧机器上开发一个 ASP.NET 站点。我最近买了一台新的 Win 7 PC,并把我所有的项目文件都转移了。当我尝试运行该项目时,我收到以下错误消息:

"Failed to decrypt using provider 'MyRsaProtectedConfigurationProvider'. Error message from the provider: The RSA key container could not be opened."

我意识到我使用RSA encryption. 这就是现在的问题所在。我不确定如何让该密钥再次工作,以便我可以在我的新机器上使用它。我从旧机器导出密钥并使用以下命令导入:

aspnet_regiis -pi "RSAProviderName" "C:\RSA_configkey.xml"

这是成功导入的。然后我运行了该项目,但出现了相同的错误消息。我想这可能是一个许可的事情,所以我跑了:

aspnet_regiis -pa "RSAProviderName" "\Desktop" -full

这也成功了,但我仍然得到错误。通过阅读,我看到人们使用“ASPNET”而不是“\Desktop”(Desktop 是我的机器名称)。但是,当我尝试使用“ASPNET”时,我得到:

No mapping between account name and security IDs was done. <Exception from HRESULT = 0x80070534

在解决此问题之前,我无法从事该项目,因此非常感谢您的帮助。谢谢!

0 投票
2 回答
3951 浏览

c# - 尝试在 C# 中对 KeyContainer 设置权限无效

我正在使用以下代码尝试以编程方式允许 NetworkService 帐户访问密钥:

此代码运行没有错误,但对密钥容器的权限没有影响。

但是,使用命令行工具 aspnet_regiis 来做同样的事情,效果很好:

我正在以完全管理员权限运行 - 如果我不以这些权限运行,则会引发异常。我也以最初创建密钥的用户身份运行。

密钥容器始终具有以下访问规则:

使用 aspnet_regiis,SID,S-1-5-20 被添加到这个列表中。我不能从代码中影响它。

我尝试从 sid 以字符串格式创建安全标识符,以及使用 SetAccessRule 而不是 AddAccessRule。

任何想法如何从代码中实际影响此 ACL 列表?

0 投票
3 回答
4870 浏览

c# - CryptographicException intermittently occurs when encrypting/decrypting with RSA

I'm trying to encrypt and decrypt data using RSA in C#. I have the following MSTest unit test:

It fails during decryption, but only sometimes. It seems like whenever I set breakpoints and step through the test, it passes. This made me think perhaps something wasn't finishing in time for decryption to occur successfully, and me slowing stepping through it while debugging gave it enough time to complete. When it fails, the line it seems to fail at is decryptedBytes = rsa.Decrypt(bytesToDecrypt, false); in the following method:

It fails with this exception:

System.Security.Cryptography.CryptographicException: Bad Data

My Encrypt method is as follows:

The ByteConverter used throughout is just the following:

I've seen a few questions on StackOverflow about RSA encryption and decryption with .NET. This one was due to encrypting with the private key and trying to decrypt with the public key, but I don't think I'm doing that. This question has the same exception as me, but the selected answer was to use OpenSSL.NET, which I would prefer not to do.

What am I doing wrong?

0 投票
2 回答
4894 浏览

c# - RSACryptoServiceProvider 和 openSSL 之间的互操作性

我使用 .NET 类RSACryptoServiceProvider来获取密钥对:

现在,我想将它与 openSSH 一起使用,但密钥格式看起来完全不同。有谁知道如何将公钥和私钥都转换为 openSSH 可以使用的文件?

谢谢!

0 投票
3 回答
1669 浏览

c# - C# 或 C 的高性能 RSA 实现

我有一个执行许多 RSA 签名操作的网络服务。我使用来自 .net 的 CryptograhyProvider。这使用来自 Windows 的非托管 CyptoAPI。

我经常遇到这个错误:

System.Security.Cryptography.CryptographicException: Der RPC-Server ist für diesen Vorgang zu stark ausgelastet。[=rpc 服务器太忙,无法完成事务]

北 System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr) 北 System.Security.Cryptography.Utils._ImportKey(SafeProvHandle hCSP, Int32 keyNumber, CspProviderFlags flags, Object cspObject, SafeKeyHandle& hKey) 北 System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters (RSAParameters 参数)

与其尝试解决这个问题,我宁愿用 DLLImport 替换我的 RSA 签名操作,以实现高性能 RSA C 实现。

有人知道或可以推荐一个吗?

OpenSSL 比 MS CryptoApi 快吗?我还怀疑加载密钥可能会导致严重的开销。

谢谢!

0 投票
1 回答
666 浏览

compact-framework - 另一个应用程序能否使用 RSACryptoServiceProvider 访问存储在密钥容器中的私钥?

我正在使用RSACryptoServiceProvider生成公钥/私钥对并使用cspParameters对象将其存储在密钥容器中。

我的问题是,在我将私钥存储在密钥容器中之后,另一个应用程序可以访问密钥容器并检索我生成的私钥吗?

如果是,那么密钥的安全性会受到损害,不是吗?

我该如何避免这种情况?我应该使用对称加密算法加密生成的私钥吗?

0 投票
1 回答
1796 浏览

c# - 通过 RSACryptoServiceProvider 加密/解密文件

我需要在 c# 中使用 RSA 算法加密/解密文件(类型 pdf、txt、doc)我从 XMl 文件导入密钥

我用这个方法

" ERROR MESSAGE="要解密的数据超过了这个模数的最大值 256 字节。"

请帮我

0 投票
1 回答
1674 浏览

windows - MS CSP:AT_SIGNATURE 和 RSA_KEY_SIGN(以及 AT_KEYEXCHANGE 和 CALG_RSA_KEYX)之间的区别

我正在为我公司销售的智能卡编写 CSP 库(用于 CryptoAPI)。

我对私钥的 AT_SIGNATURE 密钥类型和 CALG_RSA_SIGN 算法之间的区别有疑问(AT_KEYEXCHANGE 和 CALG_RSA_KEYX 也是如此)。

我知道 MSDN 网站上写的是什么,但是如果在调用 CPGenKey() 函数时指定了 CALG_RSA... 算法中的任何一个,CSP DLL 应该如何工作?我的意思是它应该生成会话 RSA 私钥还是应该生成密钥并将其保存在卡上?或者它可能取决于在 CPAcquireContext() 调用(即 CRYPT_VERIFY_CONTEXT 即)中指定的标志,并且 AT_SIGNATURE 应该定义为“签名的默认算法”,对于我们的卡来说是 RSA?

谢谢

0 投票
3 回答
1051 浏览

c# - RSACryptoServiceProvider KeyContainer 似乎超时?

我正在使用这样的 RSACryptoServiceProvider ...

然后,我在关闭 Outlook Plugin Windows Form 应用程序并将其重新打开后尝试解密数据,这就是使用这段代码的原因。解密代码如下所示...

效果很好,直到出现我无法解决的问题。不知道是不是日期变了还是什么。发生的情况是我尝试解密数据并且收到“错误数据”错误。现在它再次运行良好,直到经过一段时间,或者关闭应用程序,或者用户注销。我只是不知道也无法确定是什么原因造成的。当我吹走来自文本文件的加密数据并重新创建并解密它时,我没有问题。即使我在加密/保存到文件和从文件读取/解密之间重新启动应用程序,它也会很好用!发生了一些事情,我只是不太了解 KeyContainers 来理解什么可能使 CspParameters 过期是我最好的猜测?