• RSA非对称加密算法


    基本定义:

        RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
    在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。

    数据加解密过程:

        数据发送方使用数据接收方发放的公钥对发送数据进行RSA加密,生成的密文发送给数据接收方;

        数据接收方使用公钥对应的私钥对密文进行RSA解密,得到明文信息.

        数据是以密文形式传输的,即使密文被截获,想要破解得到对应的明文是几乎不可能的(这涉及到数论的相关理论,不予延伸).

        破解难度主要体现在两点:

        1.破解密文需要对应的私钥,而私钥的长度有1024、2048、3072等,因此暴力破解是不可行的;

        2.虽然解密的私钥是由加密公钥解决的(公钥,私钥组成一个密钥对),但是却不能通过公钥推导计算出对应的私钥.

        3.RSA使用公钥加密数据,得到的密文都是不同的,因此无法像破解MD5一样穷举出对应的明文内容.

    C#代码实现的加解密:

            /// <summary>
            /// RSA 加密
            /// </summary>
            /// <param name="source">需加密的数据</param>
            /// <param name="publicKey">公钥</param>
            /// <returns></returns>
            public static string EncryptRsa(string source, string publicKey)
            {
                using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
                {
                    rsa.FromXmlString(publicKey);
                    var cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(source), true);
                    return Convert.ToBase64String(cipherbytes);
                }
            }
    
            /// <summary>
            /// RSA解密
            /// </summary>
            /// <param name="source">需解密的数据</param>
            /// <param name="privateKey">私钥</param>
            /// <returns></returns>
            public static string DecryptRsa(string source, string privateKey)
            {
                using(RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
                {
                    rsa.FromXmlString(privateKey);
                    var cipherbytes = rsa.Decrypt(Convert.FromBase64String(source), true);
                    return Encoding.UTF8.GetString(cipherbytes);
                }
            }
    

      

    扩展阅读:  http://blog.csdn.net/lvxiangan/article/details/45487943

     
  • 相关阅读:
    Nebula3的Input系统
    Nebula3学习笔记(7): 脚本系统
    项目经理成长日记(4)——态度决定一切
    Nebula3学习笔记(2): 核心库
    Nebula3学习笔记(1): 序
    魔兽争霸的地图验证漏洞和作弊图原理,兼谈魔兽联机机制[转载]
    Nebula3的多线程架构
    项目经理成长日记(5)——五指有长短,能力各不同
    Nebula3资源子系统
    Nebula3的场景管理
  • 原文地址:https://www.cnblogs.com/miaosha5s/p/6800258.html
Copyright © 2020-2023  润新知