-8

我曾经sn.exe生成一个密钥对(私钥和公钥)。我从私钥中提取公钥,如下所示:

sn -p keyPair.snk publicKey.snk

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

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

注意:我想要一个公钥byte来与我存储在数据库中的公钥进行比较。

4

1 回答 1

10

有没有办法在不使用 sn.exe 的情况下从 C# 中的私钥中提取公钥?

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

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

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

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

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

于 2012-04-18T19:37:44.477 回答