解析公钥

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using System.Security.Cryptography.X509Certificates;
using System.Security.Cryptography;
using System.Text;
using System.Collections.Generic;
using System.IO;

namespace WebApp
{
    public partial class ResolveCertContent : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            //解析公钥
            byte[] bytes = Encoding.Default.GetBytes(this.TextBox1.Text.Trim());
            X509Certificate x509 = new X509Certificate(bytes);

            StringBuilder strBuilder = new StringBuilder();


            strBuilder.Append(" 序 列 号:" + x509.GetSerialNumberString());

            string[] issuer1 = x509.Issuer.Split(new string[] { "CN=", ", O" }, StringSplitOptions.RemoveEmptyEntries);
            string[] issuer2 = x509.Issuer.Split(new string[] { ", O=", ", C=" }, StringSplitOptions.RemoveEmptyEntries);
            string[] issuer3 = x509.Issuer.Split(new string[] { ", C=" }, StringSplitOptions.RemoveEmptyEntries);
            strBuilder.Append(" 证书类别:" + issuer1[0]);
            strBuilder.Append(" 颁发机构:" + issuer2[1]);
            strBuilder.Append(" 国    家:" + issuer3[1]);


            string[] subject1 = x509.Subject.Split(new string[] { "L=", ", S=" }, StringSplitOptions.RemoveEmptyEntries);
            string[] subject2 = x509.Subject.Split(new string[] { ", S=", ", C=" }, StringSplitOptions.RemoveEmptyEntries);
            string[] subject3 = x509.Subject.Split(new string[] { ", C=", ", O=" }, StringSplitOptions.RemoveEmptyEntries);
            string[] subject4 = x509.Subject.Split(new string[] { ", O=", ", CN=" }, StringSplitOptions.RemoveEmptyEntries);
            string[] subject5 = x509.Subject.Split(new string[] { ", CN=" }, StringSplitOptions.RemoveEmptyEntries);
            strBuilder.Append(" 所在城市:" + subject1[0]);
            strBuilder.Append(" 所在省份:" + subject2[1]);
            strBuilder.Append(" 所在国家:" + subject3[1]);
            strBuilder.Append(" 名    称:" + subject4[1]);
            strBuilder.Append(" 主    题:" + subject5[1]);

            strBuilder.Append(" 有效日期:" + x509.GetEffectiveDateString() + "-" + x509.GetExpirationDateString());

            this.TextBox2.Text = strBuilder.ToString();
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            string strFileUrl = Server.MapPath("/temp/code-3.crl");

            FileStream stream = new FileInfo(strFileUrl).OpenRead();
            byte[] buffer = new byte[stream.Length];
            stream.Read(buffer, 0, Convert.ToInt32(stream.Length));

            Mono.Security.X509.X509Crl crl = new Mono.Security.X509.X509Crl(buffer);
            for (int i = 0; i < crl.Entries.Count; i++)
            {
                try
                {
                    byte[] serialByte = crl[i].SerialNumber;
                    this.TextBox2.Text += "吊销序列号:"+this.ToHexString(serialByte)+" ";
                    continue;
                }
                catch (Exception)
                {
                }
               
            }

           
        }

        public  string ToHexString(byte[] bytes) // 0xae00cf => "AE00CF "
        {
            string hexString = string.Empty;
            if (bytes != null)
            {
                StringBuilder strB = new StringBuilder();

                for (int i = 0; i < bytes.Length; i++)
                {
                    strB.Append(bytes[i].ToString("X2"));
                }
                hexString = strB.ToString();
            }
            return hexString;
        }
    }
}

原文地址:https://www.cnblogs.com/binbinxiong/p/3309180.html