利用RSACryptoServiceProvider进行RSA加密解密
2017-07-04 15:46
621 查看
利用RSACryptoServiceProvider进行RSA加密解密
加密获取公私钥static void Main(string[] args) { RsaPrivateKey xmlPrivateKeys; RsaPublicKey xmlPublicKey; RSAKey(out xmlPrivateKeys,out xmlPublicKey); } public static void RSAKey(out RsaPrivateKey xmlPrivateKeys, out RsaPublicKey xmlPublicKey) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); string xmlPrivateKeyStr = rsa.ToXmlString(true); string xmlPublicKeyStr = rsa.ToXmlString(false); xmlPublicKey = XmlCustomSerialization.XmlDeserialize<RsaPublicKey>(xmlPublicKeyStr); xmlPublicKey.PublicKeyStr = xmlPublicKeyStr; xmlPrivateKeys = XmlCustomSerialization.XmlDeserialize<RsaPrivateKey>(xmlPrivateKeyStr); xmlPrivateKeys.PrivateKeyStr = xmlPrivateKeyStr; }
RsaPrivateKey
[XmlType(AnonymousType = true), XmlRoot(Namespace = "", IsNullable = false, ElementName = "RSAKeyValue")] public class RsaPublicKey { // Fields //[CompilerGenerated, DebuggerBrowsable(DebuggerBrowsableState.Never)] //private string <PublicKeyStr>k__BackingField; private string dField; private string dpField; private string dqField; private string exponentField; private string inverseQField; private string modulusField; private string pField; private string qField; // Methods public RsaPublicKey() { } // Properties public string D { get; set; } public string DP { get; set; } public string DQ { get; set; } public string Exponent { get; set; } public string InverseQ { get; set; } public string Modulus { get; set; } public string P { get; set; } public string PublicKeyStr { get; set; } public string Q { get; set; } }
View Code
XmlCustomSerialization xml序列化帮助类
public class XmlCustomSerialization { // Methods public static T XmlDeserialize<T>(string item) { using (StringReader stringReader = new StringReader(item)) { XmlSerializer serializer = new XmlSerializer(typeof(T)); return (T)serializer.Deserialize(stringReader); } } public static string XmlSerialize(object item, bool removeNamespace = false, bool omitXmlDeclaration = false) { string serialXML = string.Empty; try { StringBuilder sb = new StringBuilder(); XmlWriterSettings settings1 = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = omitXmlDeclaration, Encoding = Encoding.UTF8 }; XmlWriterSettings settings = settings1; XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add(string.Empty, string.Empty); XmlSerializer xmlSerializer = new XmlSerializer(item.GetType()); using (XmlWriter writer = XmlWriter.Create(sb, settings)) { if (removeNamespace) { xmlSerializer.Serialize(writer, item, ns); } else { xmlSerializer.Serialize(writer, item); } } serialXML = sb.ToString(); } catch { throw; } return serialXML; } public static string XmlSerializeToPureXML(object item) { string serialXML = string.Empty; XmlWriterSettings xmlWriterSettings = new XmlWriterSettings { OmitXmlDeclaration = true, Indent = true, CloseOutput = true, Encoding = Encoding.UTF8 }; using (StringWriter stringWriter = new StringWriter()) { using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, xmlWriterSettings)) { XmlSerializer xmlSerializer = new XmlSerializer(item.GetType()); XmlSerializerNamespaces xmlSerializerNamespaces = new XmlSerializerNamespaces(); xmlSerializerNamespaces.Add(string.Empty, string.Empty); xmlSerializer.Serialize(xmlWriter, item, xmlSerializerNamespaces); serialXML = stringWriter.ToString(); xmlWriter.Flush(); } stringWriter.Flush(); } return serialXML; } public static string XmlSerializeWithNoXmlDeclaration(object item) { string serialXML = string.Empty; XmlWriterSettings xmlWriterSettings = new XmlWriterSettings { OmitXmlDeclaration = true, Indent = true, CloseOutput = true, Encoding = Encoding.UTF8 }; using (StringWriter stringWriter = new StringWriter()) { using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, xmlWriterSettings)) { new XmlSerializer(item.GetType()).Serialize(xmlWriter, item); serialXML = stringWriter.ToString(); xmlWriter.Flush(); } stringWriter.Flush(); } return serialXML; } }
相关文章推荐
- 利用RSACryptoServiceProvider进行RSA加密解密
- 利用openssl进行RSA加密解密
- C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密
- Java-web中利用RSA进行加密解密操作的方法示例
- C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密
- 利用openssl进行RSA加密解密
- 利用openssl进行RSA加密解密
- C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密
- RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密
- JAVA利用RSA加密算法的长度限制问题解决方案注意: RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块进行。 RSA加密对明文的长度是有限制的,如
- C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServic
- C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密
- C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密
- 利用openssl进行RSA加密解密实例
- C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密
- 利用openssl进行RSA加密解密
- 利用openssl进行RSA加密解密
- 利用openssl进行RSA加密解密
- C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密
- 利用openssl进行RSA加密解密