时间:2021-05-19
解析的结构和代码:
复制代码 代码如下:
X509CertificateSubstring
#region 文件描述
#endregion
#region 类修改记录 : 每次修改一组描述
#endregion
using System;
using System.Security.Cryptography.X509Certificates;
namespace DTLEntAdministration.Common
{
/// <summary>
/// 数字签名的Substring结构
/// </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字符串解析成结构体
/// </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字符串解析成结构体,并返回数字签名存在与否
/// </summary>
/// <param name="pyFile">读取数字签名的文件的物理路径</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)
{
//没有数字签名,忽略此异常.
result = false;
}
catch (Exception ex)
{
result = false;
throw ex;
}
if (cert != null)
{
xcs = X509CertificateSubstring.Parse(cert.Subject);
}
return result;
}
}
}
调用的示例代码:
复制代码 代码如下:
/// <summary>
/// 获取数字签名的名称
/// </summary>
/// <param name="pyFile">读取数字签名的文件的物理路径</param>
/// <returns>数字签名,如果没有数字签名则返回空字符串</returns>
public static string GetX509CertificateSubstringCN(string pyFile)
{
string SubstringCN = string.Empty;
X509CertificateSubstring xcs;
if (X509CertificateSubstring.TryParse(pyFile, out xcs))
{
SubstringCN = xcs.CN;
}
return SubstringCN;
}
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在Win8操作系统下,驱动数字签名是指运用在驱动上的数字签名,有数字签名的驱动操作系统会认为它是安全,稳定,有版权的驱动。如果驱动程序没有数字签名是无法成功
你知道word数字签名有什么用?你会利用word数字签名保护文档吗?今天小编就来讲讲有关word数字签名的内容。一、什么是“数字签名”我
数字签名错误的原因是数字证书可能超过有效期了,数字证书有效期5年,到期后您需要办理证书换发手续才能继续使用。 数字签名(又称公钥数字签名、电子签章)是一种类似
数字签名广泛用于保护PDF文档,可见数字签名在日常生活中是相当重要的。在这篇文章中我将与大家分享如何给PDF文件添加可见的数字签名。首先我下载了一个由E-ice
数字签名。数字签名的主要方式是:报文的发送方从报文文本中生成一个128位的散列值(或报文摘要)。发送方用自己的专用密钥对这个散列值进行加密来形成发送方的数字签名