pfx文件解析私钥和公钥
2015-10-14 11:00
337 查看
最近和某行对接,发现私钥和公钥以pfx文件形式传给我们,需要我们自己进行读取,当时头就有点儿大(菜鸟,第一次接触,哎~~~)
先说一下pfx证书与cer证书的区别
PFX证书:由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以pfx作为证书文件后缀名。
CER证书:证书中没有私钥,DER 编码二进制格式的证书文件/BASE64 编码格式的证书文件,以cer作为证书文件后缀名。
综上所述:pfx证书文件中比cer文件中多了私钥。其他不多说看代码,pfx文件的生成方法及私钥和公钥导出方法(.net版)
/// <summary>
/// 获取私钥
/// </summary>
/// <param name="path">文件路径</param>
/// <param name="password">文件秘钥</param>
/// <returns></returns>
public static string GetPrivateKey(string path,string password)
{
try
{
X509Certificate2 cert = new X509Certificate2(path, password, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
return cert.PrivateKey.ToXmlString(true);
}
catch
{
return "";
}
}
/// <summary>
/// 获取公钥
/// </summary>
/// <param name="path">文件路径</param>
/// <param name="password">文件秘钥</param>
/// <returns></returns>
public static string GetPublicKey(string path, string password)
{
try
{
X509Certificate2 cert = new X509Certificate2(path, password, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
return cert.PublicKey.Key.ToXmlString(false);
}
catch
{
return "";
}
}
先说一下pfx证书与cer证书的区别
PFX证书:由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以pfx作为证书文件后缀名。
CER证书:证书中没有私钥,DER 编码二进制格式的证书文件/BASE64 编码格式的证书文件,以cer作为证书文件后缀名。
综上所述:pfx证书文件中比cer文件中多了私钥。其他不多说看代码,pfx文件的生成方法及私钥和公钥导出方法(.net版)
/// <summary>
/// 获取私钥
/// </summary>
/// <param name="path">文件路径</param>
/// <param name="password">文件秘钥</param>
/// <returns></returns>
public static string GetPrivateKey(string path,string password)
{
try
{
X509Certificate2 cert = new X509Certificate2(path, password, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
return cert.PrivateKey.ToXmlString(true);
}
catch
{
return "";
}
}
/// <summary>
/// 获取公钥
/// </summary>
/// <param name="path">文件路径</param>
/// <param name="password">文件秘钥</param>
/// <returns></returns>
public static string GetPublicKey(string path, string password)
{
try
{
X509Certificate2 cert = new X509Certificate2(path, password, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
return cert.PublicKey.Key.ToXmlString(false);
}
catch
{
return "";
}
}
相关文章推荐
- C#.NET获取拨号连接的宽带连接方法
- PowerShell中使用.NET将程序集加入全局程序集缓存
- .net(c#)中的new关键字详细介绍
- 由vbs sort引发.NET Framework之间的关系说明
- C#难点逐个击破(6):C#数据类型与.net framework数据类型
- .NET中的async和await关键字使用及Task异步调用实例
- .Net中的json操作类用法分析
- .net实现序列化与反序列化实例解析
- .NET中的Timer类型用法详解
- 关于.net(C#)中的跨进程访问的问题
- .NET实现父窗体关闭而不影响子窗体的方法
- 基于.Net中的数字与日期格式化规则助记词的使用详解
- .NET微信公众号开发之公众号消息处理
- .Net下的签名与混淆图文分析
- .NET 扩展实现代码
- .NET实现定时发送邮件代码(两种方式)
- .net实现文件读写的几种常用方法
- .net文件上传时实现通过文件头确认文件类型的方法
- 四个常用的.NET的SQLHELPER方法实例
- .net中前台javascript与后台c#函数相互调用问题