zoukankan      html  css  js  c++  java
  • C# RSA加密解密

    RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
    C#使用RSA加密算法重要的一个类就是RSACryptoServiceProvider,这个类可以生成一对公钥和私钥,同时也可以加密和解密。

    生成公钥和私钥的代码如下:

    /// <summary>
    /// 生成一对公钥和私钥
    /// </summary>
    /// <returns></returns>
    public KeyValuePair<string, string> GetKeyPair1()
    {
        RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
        string public_Key = Convert.ToBase64String(RSA.ExportCspBlob(false));
        string private_Key = Convert.ToBase64String(RSA.ExportCspBlob(true));
        return new KeyValuePair<string, string>(public_Key, private_Key);
    }
    /// <summary>
    /// 生成一对公钥和私钥
    /// </summary>
    /// <returns></returns>
    public KeyValuePair<string, string> GetKeyPair2()
    {
        RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
        string public_Key = RSA.ToXmlString(false);
        string private_Key = RSA.ToXmlString(true);
        return new KeyValuePair<string, string>(public_Key, private_Key);
    }

    加密方法,加密方法RSA.Encrypt,解密方法RSA.Decrypt。这个不用多说,关键是导入私钥和公钥。

    //方法1
    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
    rsa.ImportCspBlob(Convert.FromBase64String(str_Public_Key));
    //方法2
    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
    rsa.FromXmlString(privateKey);

    RSA非对称加密,支持公钥加密私钥解密,或者私钥加密公钥解密,但是C#却只实现了公钥加密私钥解密,如果我们需要实现私钥加密公钥解密,就需要使用到第三方插件,“BouncyCastle.Crypto”,具体操作方法如下:

    原文参考了:https://www.cnblogs.com/dj258/p/6049786.html

  • 相关阅读:
    day14(xml 编写及解析)
    day11(多线程,唤醒机制,生产消费者模式,多线程的生命周期)
    day13(反射,BeanUtils包)
    day10(IO流汇总)
    day08(File类 ,字节流)
    day08(异常处理,创建异常,finally,throws和throw的区别)
    [SPOJ-PT07J] Query on tree III (主席树)
    [ZJOI2008] 树的统计(树链剖分)
    长链剖分学习笔记
    [BZOJ4260] Codechef REBXOR (01字典树,异或前缀和)
  • 原文地址:https://www.cnblogs.com/duanjt/p/11061380.html
Copyright © 2011-2022 走看看