利用RSACryptoServiceProvider进行RSA加密解密

发布时间:2017-7-9 7:18:37编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"利用RSACryptoServiceProvider进行RSA加密解密",主要涉及到利用RSACryptoServiceProvider进行RSA加密解密方面的内容,对于利用RSACryptoServiceProvider进行RSA加密解密感兴趣的同学可以参考一下。

利用RSACryptoServiceProvider进行RSA加密解密

利用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 RsaPrivateKey
    {
        // Fields
        //[CompilerGenerated, DebuggerBrowsable(DebuggerBrowsableState.Never)]
        //private string <PrivateKeyStr> k__BackingField;
        private string exponentField;
        private string modulusField;

        // Methods
        public RsaPrivateKey() { }

        // Properties
        public string Exponent { get; set; }
        [XmlElement("Modulus")]
        public string Modulus { get; set; }
        public string PrivateKeyStr { get; set; }
    }
View Code

RsaPublicKey

[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;
        }


上一篇:Open Nginx gzip
下一篇:领域数据模型设计的那些话

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款