解析數(shù)字簽名的substring結(jié)構(gòu)(獲取數(shù)字簽名時(shí)間)
解析的結(jié)構(gòu)和代碼:
X509CertificateSubstring
#region 文件描述
#endregion
#region 類(lèi)修改記錄 : 每次修改一組描述
#endregion
using System;
using System.Security.Cryptography.X509Certificates;
namespace DTLEntAdministration.Common
{
/// <summary>
/// 數(shù)字簽名的Substring結(jié)構(gòu)
/// </summary>
public class X509CertificateSubstring
{
//CN=Shenzhen DriveTheLife Software Technology Co.Ltd, OU=Digital ID Class 3 - Microsoft Software Validation v2, O=Shenzhen DriveTheLife Software Technology Co.Ltd, L=Shenzhen, S=Guangdong, C=CN
#region 私有字段
private string _CN = string.Empty;
private string _OU = string.Empty;
private string _O = string.Empty;
private string _L = string.Empty;
private string _S = string.Empty;
private string _C = string.Empty;
#endregion
#region 公共只讀屬性
public string CN { get { return _CN; } }
public string OU { get { return _OU; } }
public string O { get { return _O; } }
public string L { get { return _L; } }
public string S { get { return _S; } }
public string C { get { return _C; } }
#endregion
public X509CertificateSubstring() { }
/// <summary>
/// 將Substring字符串解析成結(jié)構(gòu)體
/// </summary>
/// <param name="substring">Substring字符串</param>
/// <returns>X509CertificateSubstring</returns>
public static X509CertificateSubstring Parse(string substring)
{
X509CertificateSubstring xcs = new X509CertificateSubstring();
string[] items = substring.Split(',');
foreach (var item in items)
{
if (item.Trim().StartsWith("CN="))
{
xcs._CN = item.Trim().Substring(3); continue;
}
if (item.Trim().StartsWith("OU="))
{
xcs._OU = item.Trim().Substring(3); continue;
}
if (item.Trim().StartsWith("O="))
{
xcs._O = item.Trim().Substring(2); continue;
}
if (item.Trim().StartsWith("L="))
{
xcs._L = item.Trim().Substring(2); continue;
}
if (item.Trim().StartsWith("S="))
{
xcs._S = item.Trim().Substring(2); continue;
}
if (item.Trim().StartsWith("C="))
{
xcs._C = item.Trim().Substring(2); continue;
}
}
return xcs;
}
/// <summary>
/// 將Substring字符串解析成結(jié)構(gòu)體,并返回?cái)?shù)字簽名存在與否
/// </summary>
/// <param name="pyFile">讀取數(shù)字簽名的文件的物理路徑</param>
/// <param name="xcs">X509CertificateSubstring</param>
/// <returns>bool</returns>
public static bool TryParse(string pyFile, out X509CertificateSubstring xcs)
{
bool result = true;
xcs = new X509CertificateSubstring();
string SubstringCN = string.Empty;
X509Certificate cert = null;
try
{
cert = X509Certificate2.CreateFromSignedFile(pyFile);
}
catch (System.Security.Cryptography.CryptographicException ce)
{
//沒(méi)有數(shù)字簽名,忽略此異常.
result = false;
}
catch (Exception ex)
{
result = false;
throw ex;
}
if (cert != null)
{
xcs = X509CertificateSubstring.Parse(cert.Subject);
}
return result;
}
}
}
調(diào)用的示例代碼:
/// <summary>
/// 獲取數(shù)字簽名的名稱(chēng)
/// </summary>
/// <param name="pyFile">讀取數(shù)字簽名的文件的物理路徑</param>
/// <returns>數(shù)字簽名,如果沒(méi)有數(shù)字簽名則返回空字符串</returns>
public static string GetX509CertificateSubstringCN(string pyFile)
{
string SubstringCN = string.Empty;
X509CertificateSubstring xcs;
if (X509CertificateSubstring.TryParse(pyFile, out xcs))
{
SubstringCN = xcs.CN;
}
return SubstringCN;
}
相關(guān)文章
C#短時(shí)間內(nèi)產(chǎn)生大量不重復(fù)的隨機(jī)數(shù)
在C#編程中,經(jīng)常會(huì)碰到產(chǎn)生隨機(jī)數(shù)的情況,并且是在短時(shí)間內(nèi)產(chǎn)生一組隨機(jī)數(shù)。如果這組隨機(jī)數(shù)中有大量重復(fù)的,則達(dá)不到我們的要求2013-02-02C#在新建線(xiàn)程中使用Timer無(wú)效問(wèn)題及解決
這篇文章主要介紹了C#在新建線(xiàn)程中使用Timer無(wú)效問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08學(xué)習(xí)C#靜態(tài)函數(shù)及變量的一個(gè)精典例子與代碼
學(xué)習(xí)C#靜態(tài)函數(shù)及變量的一個(gè)精典例子與代碼...2007-03-03System.Data.OleDb.OleDbException: 未指定的錯(cuò)誤的完美解決方法
本文給大家?guī)?lái)三種有關(guān)System.Data.OleDb.OleDbException: 未指定的錯(cuò)誤的完美解決方法,每種方法都很不錯(cuò),需要的朋友可以參考下2016-09-09利用C#代碼實(shí)現(xiàn)圖片旋轉(zhuǎn)360度
本文介紹利用C#代碼實(shí)現(xiàn)圖片旋轉(zhuǎn)360度,具體實(shí)例代碼已附上,僅供大家參考,希望對(duì)大家有所幫助2016-11-11