我使用sn.exe
生成密钥对(私钥和公钥)。我从私钥中提取公钥如下:
sn -p keyPair.snk publicKey.snk
我使用C#读取它并将其作为二进制文件存储在数据库中,用于加密我的数据。
有没有办法在不使用sn.exe
的情况下从C#中的私钥中提取公钥?
注意:我希望将公钥作为byte
与我在数据库中存储的公钥进行比较。
答案 0 :(得分:10)
有没有办法在不使用sn.exe的情况下从C#中的私钥中提取公钥?
这样做非常困难但是有可能;我已经这样做了。
您需要做的是在mscorwks.dll中调用StrongNameGetPublicKey。
我通过使用C#读取它并将其作为二进制文件存储在数据库中以用于加密我的数据
这是一个非常糟糕的主意。强名称公钥的目的不是加密您的数据!强名称公钥的目的是,以便客户验证您提供的程序集是由您编写的。如果您使用公钥而不是该任务,那么做一些非常非常错误的事情你应该立即停止这样做。
强名称使用加密,但它们不是加密技术;它们是证据产生技术,用于代码访问安全策略评估。