我正在寻找在 .NET 中解码 PKCS#12 文件的方法,我需要提取私钥和任何证书,以便我可以以编程方式访问以下内容。
- 模量
- 公共指数
- 私人指数
- 素数1
- 素数2
- 指数1
- 指数2
- 系数
我需要此信息,以便我可以成功使用 PKCS#11 创建私钥并在 USB 令牌上进行认证。
我找到了一个使用OpenSSL来输出这些数据的网站。当我发现OpenSSL.NET时我非常兴奋,但是拆分 PKCS#12 文件的功能尚未实现。我想知道是否有人知道任何替代方案。
谢谢
罗汉
我正在寻找在 .NET 中解码 PKCS#12 文件的方法,我需要提取私钥和任何证书,以便我可以以编程方式访问以下内容。
我需要此信息,以便我可以成功使用 PKCS#11 创建私钥并在 USB 令牌上进行认证。
我找到了一个使用OpenSSL来输出这些数据的网站。当我发现OpenSSL.NET时我非常兴奋,但是拆分 PKCS#12 文件的功能尚未实现。我想知道是否有人知道任何替代方案。
谢谢
罗汉
干杯曼努埃尔,
我下载了 Bouncy Castle API,很快就找到了我需要的东西。源代码包含大量单元测试。
static void Main(string[] args)
{
char[] password = new char[] {'p','a','s','s','w','o','r','d'};
using(StreamReader reader = new StreamReader(@"Test.pfx"))
{
Pkcs12Store store = new Pkcs12Store(reader.BaseStream,password);
foreach (string n in store.Aliases)
{
if(store.IsKeyEntry(n))
{
AsymmetricKeyEntry key = store.GetKey(n);
if(key.Key.IsPrivate)
{
RsaPrivateCrtKeyParameters parameters = key.Key as RsaPrivateCrtKeyParameters;
Console.WriteLine(parameters.PublicExponent);
}
}
}
}
}
我在最近的一个项目中,在它的 Java 端口上,可扩展地使用了 bouncy castle API,它完美无瑕地创造了奇迹。
我敢打赌,他们的 C# 并没有太大的不同,而且它在目标方面做得非常好。
AFAIK,您必须使用 win32 加密库,请参阅此 MSDN 文章:http: //msdn.microsoft.com/en-us/library/ms867088.aspx
您应该能够通过 pInvoke 直接使用 OpenSSL。也许你可以在 OpenSSL.NET 项目开始工作时回馈它。
win32 加密提供程序是一个不错的选择,但它在可以解析和生成的格式方面可能有点不灵活。