【问题标题】:Extract public key from private key in C#从 C# 中的私钥中提取公钥
【发布时间】:2012-04-30 05:52:11
【问题描述】:

我使用sn.exe 生成密钥对(私钥和公钥)。我从私钥中提取公钥如下:

sn -p keyPair.snk publicKey.snk

我使用 C# 读取它并将其作为二进制文件存储在数据库中以用于加密我的数据。

有什么方法可以在不使用sn.exe 的情况下从 C# 中的私钥中提取公钥?

注意:我想要一个作为byte 的公钥,以便将它与我存储在数据库中的公钥进行比较。

【问题讨论】:

标签: c# public-key-encryption


【解决方案1】:

有什么方法可以在不使用 sn.exe 的情况下从 C# 中的私钥中提取公钥?

很难做到这一点,但这是可能的;我已经这样做了。

您需要做的是 p/invoke 到 mscorwks.dll 中的 StrongNameGetPublicKey。

我使用 C# 读取它并将其作为二进制存储在数据库中以用于加密我的数据

这是一个非常糟糕的主意。强名称公钥的目的不是加密您的数据!强名称公钥的目的是让您的客户验证您提供给他们的程序集是由您编写的。如果您将公钥用于该任务以外的任何事情您就是做一些非常非常错误的事情,你应该立即停止这样做。

强名称使用加密,但它们不是加密技术;它们是一种证据生成技术,用于代码访问安全策略评估

【讨论】:

  • 通过使用 SN.EXE 。我可以生成 1024 – 2048 位的 RSA 密钥,那么如果我用它来加密我的数据有什么问题????我尝试使用 PUTTY-GEN 但它在 C# 中不起作用我的问题是在我的数据库中恢复私钥后进行多重加密以加密安全数据和解密数据......我想将每个私钥与我的数据库中合适的公钥匹配,所以我需要从我的私钥中提取公钥......任何建议
  • 可能想按一下键盘上的“Caps Lock”键。
  • @user726072:我的建议是您为工作使用正确的工具。如果您打算生成用于加密的 RSA 密钥,那么您为什么要首先使用旨在对文件进行强命名的工具呢?只需创建RSACryptoServiceProvider 的实例!然后,您可以从 RSAParameters 中获取指数和模数。
猜你喜欢
  • 2011-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 2017-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多