Пример #1
0
        /// <summary>
        /// 获取签名密码
        /// </summary>
        /// <param name="digitalSignatureFile">数字证书文件</param>
        /// <returns>私钥</returns>
        public static string GetSignedPassword(string digitalSignatureFile)
        {
            // 0:这里需要处理异常信息
            // 1:定义私钥
            string signedPassword = string.Empty;
            // 2:读取证书文件
            string digitalSignature = FileUtil.ReadBinaryFile(digitalSignatureFile);
            // 3:解密文件
            string xmlFile = StringCoding.DecodeDES(digitalSignature, "DotNetKey");
            // 4:按XML文件读取
            XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.LoadXml(xmlFile);
            signedPassword = xmlDocument.SelectSingleNode("//DigitalSignature/Key").Attributes["SignedPassword"].Value;
            return(signedPassword);
        }
Пример #2
0
        /// <summary>
        /// 获取私钥
        /// </summary>
        /// <param name="digitalSignatureFile">数字证书文件</param>
        /// <param name="signedPassword">签名密码</param>
        /// <returns>私钥</returns>
        public static string GetPrivateKey(string digitalSignatureFile, string signedPassword)
        {
            // 0:这里需要处理异常信息
            // 1:定义私钥
            string privateKey = string.Empty;
            // 2:读取证书文件
            string digitalSignature = FileUtil.ReadBinaryFile(digitalSignatureFile);
            // 3:解密文件
            string xmlFile = StringCoding.DecodeDES(digitalSignature, "DotNetKey");
            // 4:按XML文件读取
            XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.LoadXml(xmlFile);
            string keySignedPassword = xmlDocument.SelectSingleNode("//DigitalSignature/Key").Attributes["SignedPassword"].Value;

            // 5:若签名密码不对,不应该能读取私钥
            if (StringCoding.EncodeMD5Encrypt32(signedPassword).Equals(keySignedPassword))
            {
                privateKey = xmlDocument.SelectSingleNode("//DigitalSignature/Key").Attributes["PrivateKey"].Value;
            }
            return(privateKey);
        }