从C#中的私钥中提取公钥

时间:2012-04-18 18:41:23

标签: c# public-key-encryption

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

sn -p keyPair.snk publicKey.snk

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

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

注意:我希望将公钥作为byte与我在数据库中存储的公钥进行比较。

1 个答案:

答案 0 :(得分:10)

  

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

这样做非常困难但是有可能;我已经这样做了。

您需要做的是在mscorwks.dll中调用StrongNameGetPublicKey。

  

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

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

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