【问题标题】:Encrypting Data with RSA in .NET在 .NET 中使用 RSA 加密数据
【发布时间】:2012-04-08 10:07:49
【问题描述】:

我有一个DER 文件,其中sha1RSA 作为Signature Algorithm。我必须使用它加密一些数据。

谁能告诉我如何加载DER 文件并使用其中的RSA 公钥在.NET 中加密我的数据?

【问题讨论】:

  • 您不应该使用 RSA 等非对称算法加密数据。
  • 它从来都不是用来加密更大的数据块的——太慢了,容易受到针对这个的攻击等等。RSA加密应该只用于包装对称密码密钥,甚至应该总是被替换通过立即执行 TLS。这取决于您是否要实际将数据从 A 传输到 B(总是在那里使用 TLS),否则如果您真的想加密它(比如说将其存储在数据库或磁盘上),那么您应该使用对称加密算法而不是 RSA。

标签: c# .net vb.net cryptography rsa


【解决方案1】:

DER 或可分辨编码规则是一种对数据对象(例如 X.509 证书)进行编码以进行数字签名或对其签名进行验证的方法。

X.509 证书仅包含公钥。需要私钥解密!

通常在受密码保护的 .PFX 文件中交换私钥。

-- 编辑--

抱歉,我误读了您的问题。是的,您可以使用 X.509 证书的公钥进行加密。您可以使用 System.Security.Cryptography.X509Certificates.X509Certificate2.Import 方法加载 .der。

然后转换公共并加密,类似于:

rsa = (RSACryptoServiceProvider) certificate.PublicKey.Key;
encryptedText = rsa.Encrypt(msg, true);

【讨论】:

  • PFX 文件可以受密码保护。
  • @Henk,您在技术上是正确的。但是所有的私钥都应该有密码保护。
  • 验证是什么意思?您只能加密或解密。要解密,您需要您没有的私钥。
  • 我如何将 encryptedText 再次转换为字符串?
  • 您必须使用私钥解密。使用 RSACryptoServiceProvider.Decrypt 方法。
猜你喜欢
  • 2011-02-28
  • 1970-01-01
  • 1970-01-01
  • 2014-06-02
  • 2013-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-06
相关资源
最近更新 更多