/// <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); }
/// <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); }