问题标签 [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.
c# - RSA encrypt a string in C# using pre-existing keys generated by Java library
I need to port to C# a portion of an existing and working Java system which handles encrypting/decrypting a string. My C# solution will encrypt a string, and the existing Java system will need to be able to decrypt that string.
Both systems will need to use the existing private and public keys. The keys were generated from the Java system (".key" extension). Assume both systems will have safe and reliable access to the same key files.
The closest I've found is this thread (RSA .NET encryption Java decryption) but it uses RSACryptoServiceProvider.FromXmlString(). Most other examples deal with generating your own keys using RSACryptoServiceProvider, and encrypting/decrypting all in the same solution. In short, I can't find any way to accomplish this.
For reference, here is the relevant Java code currently handling the encrypting (obvious cut/paste job so please ignore minor syntax errors; again, this is working fine currently)
Questions:
Is this possible?
Any samples or documentation that can set me in the right direction?
.net - X509Certificate2.PublicKey 返回的线程安全和 RSACryptoServiceProvider
RSACryptoServiceProvider
被记录为可能不是线程安全的。不幸的是,它使用内部调用,EncryptKey
所以我无法分析代码来验证它。那么是否知道它实际上是否是线程安全的?
我问是因为我System.Security.Cryptography
至少有一次(MD5
)遇到了线程安全问题。
我的问题与Mitigating RsaCryptoServiceProvider thread safety issues on a web server非常相似,但是这个问题并没有得到真正的回答(在高负载下是否失败的实验并不能保证线程安全)。
c# - RSA加密大文件
问题是我已经使用我想出的以下代码使用 rsa 加密了一个文件:
问题是当我尝试解密时,我必须将我放入 base 64 的密文转换为 base 64 块,但随后我从 RSAServiceProvider 的解密方法中得到一个错误的长度异常。我一直在关注这个网站上写的例子:http: //digitalsquid.co.uk/2009/01/rsa-in-cs/无济于事。我没有得到任何加密错误只是解密。我什至不能确定我是否正确地进行了加密。贝娄是我的解密循环:
我知道这不是最好的将文件拆分为 RSA IT。是的,通常您使用 RSA 将密钥加密为流密码(如 AES)并使用 AES 加密文件。这是我正在做的一个项目,所以我必须这样做。
提前感谢您的帮助。
c# - 为什么 RSACryptoServiceProvider.SignHash 有“哈希算法标识符”参数?
既然RSACryptoServiceProvider.SignHash对已经散列的消息进行签名- 为什么它需要知道使用了哪种散列算法?
c# - 为什么 RSACryptoServiceProvider.VerifyHash 有一个“哈希算法标识符”参数?
既然RSACryptoServiceProvider.VerifyHash验证已经散列的消息 - 为什么它需要知道使用了哪种散列算法?
在询问SignHash
方法时,有人提出了传递哈希的原因(而不是在签名中实际使用)。但在这种情况下,这并不能解释。(因为它不是out
参数。)
openssl - php / openssl 中的 RSACryptoServiceProvider SignHash 等效项?
我的理解是 openssl_sign 与 RSACryptoServiceProvider.SignData 相同。是否有 openssl(或 php)命令与 RSACryptoServiceProvider.SignHash 相同?
c# - RSAParameters 到 pfx (X509Certificate2) 的转换
我想从RSACryptoServiceProvider创建的密钥创建一个pfx文件。我试过了:
这是相反的:
这似乎有效(第二个,即)。但出现以下错误:
m_safeCertContext 是无效句柄。
我使用RSAParameters尝试了一些东西- 但无济于事。
c# - 如何检查容器中是否已存在密钥?
我正在为多个客户端之间的安全消息构建应用程序。为了实现这一点,我使用 AES 加密消息,然后使用收件人公共 RSA 密钥加密 AES 密钥,然后将这两个组件(RSA 加密的 AES 密钥和 AES 加密的消息)发送给收件人。整个过程运行良好,没有任何错误。
现在我遇到了一个问题,我想知道最佳实践是什么:为了保留一个参与者的私钥和公钥,我需要存储密钥对。可以将其作为 XML 文件保存在某处,但显然不是一种选择。所以决定使用这里描述的密钥容器。实现容器的使用很容易,但我怎么能
- 检查指定的容器是否已经存在?
- 检查密钥大小是否与给定值匹配?
据我所知,这是不可能的,因为如果容器不存在,RSACryptoServiceProvider 会生成一个新密钥 - 没有告诉。但我需要知道是否有以前存储的密钥对可用,或者是否创建了新的密钥对。
我该如何解决?或者这是一个完全错误的方法?
rsa - 公钥/私钥中的 RSA 密钥值和模数
我正在编写一个使用 PKI 来保护电子邮件、文件等的应用程序。使用System.Cryptography
命名空间,我正在使用RSACryptoServiceProvider
.
方法是:
keySize
= 2048。
这会产生一个像这样的公钥(为了整洁,它已经用“-----START/END PUBLIC KEY BLOCK-----”包装器修剪/填充。
当我查看基于 PGP 的公钥(或私钥)时,密钥内没有<RSAKeyValue>
,<Modulus>
或<Exponent>
值。
难道我做错了什么?我错过了什么吗?如果我分发此密钥,这是一个安全问题吗?
加密对我来说是一个新的和令人兴奋的领域,所以我非常感谢这里的任何指导。我担心我搞砸了 - 加密密钥工作并使用私钥解密工作 - 我只是想知道 PGP/GPG 密钥在外观上有何不同以及我需要做些什么来纠正这个问题?
先感谢您!
c# - 将Python RSA解密脚本转换为C#,输出只有最后16B而不是128B
我今天来找你,在我的头撞在加密的砖墙上之后,我手里拿着帽子。
这是前提:我有一个生成 ASN.1 编码的 DER 密钥的 python 脚本。然后我有另一个 python 脚本,它获取那个 DER 私钥并使用它来解密一个 base64 编码的字符串。我目前正在尝试将第二个脚本转换为它的 C# 替代方案,并且我已经让它工作了——在一定程度上。
使用原始 python 脚本时,解密后的输出为 127 字节长,而我拥有的 C# 代码为 16 字节长。在这一点上,我认为我的 C# 代码完全错误,直到我注意到 python 输出和 C# 输出的最后 16 个字节完全相同。笏?
这是我的prosterity代码(obv没有错误检查等)
输入 DER 私钥(用于 Web 的 Base64 编码)
输入加密字符串(Base64 编码)
Python RSA 脚本使用 (PyCrypt) 解码加密字符串
Python 脚本输出
C# RSA 解密脚本
C# 脚本输出
如您所见,C# 代码的输出只有 16 个字节长,但它直接匹配 Python 脚本的最后 16 个字节。我不确定到底发生了什么,我对 RSA 的(基本)理解告诉我它应该是一个全有或全无的函数——整个文本被解密,或者我得到胡言乱语。