RSA加密算法

在谈RSA加密算法之前,我们需要先了解下两个专业名词,对称加密和非对称加密。

对称加密即:含有一个称为密钥的东西,在消息发送前使用密钥对消息进行加密,在对方收到消息之后,使用相同的密钥进行解密

非对称加密即:加密和解密使用不同的密钥的一类加密算法。这类加密算法通常有两个密钥A和B,使用密钥A加密数据得到的密文,只有密钥B可以进行解密操作(即使密钥A也无法解密),相反,使用了密钥B加密数据得到的密文,只有密钥A可以解密。这两个密钥分别称为私钥和公钥,顾名思义,私钥就是你个人保留,不能公开的密钥,而公钥则是公开给加解密操作的另一方的。根据不同用途,对数据进行加密所使用的密钥也不相同(有时用公钥加密,私钥解密;有时相反用私钥加密,公钥解密)。非对称加密的代表算法是RSA算法。

了解了这两个名词下面来讲,RSA加密算法。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,多用于数据加密和数字签名。虽然有这么大的影响力,但是同时它也有一些弊端,它产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密,分组长度太大等。

下面通过示例演示使用RSA加密、解密,引用名称空间System.Security.Cryptography;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

//加密

    private string Encryption(string express)

    {

        CspParameters param = new CspParameters();

        param.KeyContainerName = "oa_erp_dowork";//密匙容器的名称,保持加密解密一致才能解密成功

        using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(param))

        {

            byte[] plaindata = Encoding.Default.GetBytes(express);//将要加密的字符串转换为字节数组

            byte[] encryptdata = rsa.Encrypt(plaindata, false);//将加密后的字节数据转换为新的加密字节数组

            return Convert.ToBase64String(encryptdata);//将加密后的字节数组转换为字符串

        }

    }

    //解密

    private string Decrypt(string ciphertext)

    {

        CspParameters param = new CspParameters();

        param.KeyContainerName = "oa_erp_dowork";

        using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(param))

        {

            byte[] encryptdata = Convert.FromBase64String(ciphertext);

            byte[] decryptdata = rsa.Decrypt(encryptdata, false);

            return Encoding.Default.GetString(decryptdata);

        }

    }

下面我再通过一个示例向大家演示,通过使用RSA加密算法产出公匙和私匙

1

2

3

4

5

6

7

8

9

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

using (StreamWriter sw = new StreamWriter(Server.MapPath("PublicKey.xml")))//产生公匙

{

    sw.WriteLine(rsa.ToXmlString(false));

}

using (StreamWriter sw = new StreamWriter(Server.MapPath("PrivateKey.xml")))//产生私匙(也包含私匙)

{

    sw.WriteLine(rsa.ToXmlString(true));

}

  案列程序

RSA加密算法

在谈RSA加密算法之前,我们需要先了解下两个专业名词,对称加密和非对称加密。

对称加密即:含有一个称为密钥的东西,在消息发送前使用密钥对消息进行加密,在对方收到消息之后,使用相同的密钥进行解密

非对称加密即:加密和解密使用不同的密钥的一类加密算法。这类加密算法通常有两个密钥A和B,使用密钥A加密数据得到的密文,只有密钥B可以进行解密操作(即使密钥A也无法解密),相反,使用了密钥B加密数据得到的密文,只有密钥A可以解密。这两个密钥分别称为私钥和公钥,顾名思义,私钥就是你个人保留,不能公开的密钥,而公钥则是公开给加解密操作的另一方的。根据不同用途,对数据进行加密所使用的密钥也不相同(有时用公钥加密,私钥解密;有时相反用私钥加密,公钥解密)。非对称加密的代表算法是RSA算法。

了解了这两个名词下面来讲,RSA加密算法。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,多用于数据加密和数字签名。虽然有这么大的影响力,但是同时它也有一些弊端,它产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密,分组长度太大等。

下面通过示例演示使用RSA加密、解密,引用名称空间System.Security.Cryptography;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

//加密

    private string Encryption(string express)

    {

        CspParameters param = new CspParameters();

        param.KeyContainerName = "oa_erp_dowork";//密匙容器的名称,保持加密解密一致才能解密成功

        using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(param))

        {

            byte[] plaindata = Encoding.Default.GetBytes(express);//将要加密的字符串转换为字节数组

            byte[] encryptdata = rsa.Encrypt(plaindata, false);//将加密后的字节数据转换为新的加密字节数组

            return Convert.ToBase64String(encryptdata);//将加密后的字节数组转换为字符串

        }

    }

    //解密

    private string Decrypt(string ciphertext)

    {

        CspParameters param = new CspParameters();

        param.KeyContainerName = "oa_erp_dowork";

        using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(param))

        {

            byte[] encryptdata = Convert.FromBase64String(ciphertext);

            byte[] decryptdata = rsa.Decrypt(encryptdata, false);

            return Encoding.Default.GetString(decryptdata);

        }

    }

下面我再通过一个示例向大家演示,通过使用RSA加密算法产出公匙和私匙

1

2

3

4

5

6

7

8

9

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

using (StreamWriter sw = new StreamWriter(Server.MapPath("PublicKey.xml")))//产生公匙

{

    sw.WriteLine(rsa.ToXmlString(false));

}

using (StreamWriter sw = new StreamWriter(Server.MapPath("PrivateKey.xml")))//产生私匙(也包含私匙)

{

    sw.WriteLine(rsa.ToXmlString(true));

}

  

C# RAS 加密与解密讲解相关推荐

  1. 安全编程之RAS加密与解密

    RAS是什么: RSA:是一种公钥密码体制,公钥公开,私钥保密,它的加密解密算法是公开的. 由公钥加密的内容可以并且只能由私钥进行解密,并且由私钥加密的内容可以并且只能由公钥进行解密. 也就是说,RS ...

  2. Android中RAS加密解密

    转载请注明出处: http://blog.csdn.net/bbld_/article/details/38777491 概述 RSA是目前最有影响力的公钥加密算法,该算法基于一个十分简单的数论事实: ...

  3. 使用RAS进行英文的加密和解密

    以下是源码,亲测可用. 目前只能实现英文部分的加密和解密. #include "mainwindow.h" #include "ui_mainwindow.h" ...

  4. 安全系列之——手写JAVA加密、解密

    其他文章: 安全系列之--手写JAVA加密.解密 安全系列之--数据传输的完整性.私密性.源认证.不可否认性 安全系列之--主流Hash散列算法介绍和使用 安全系列之--RSA的公钥私钥有多少人能分的 ...

  5. 数字证书应用综合揭秘(包括证书生成、加密、解密、签名、验签)

    引言 数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件.为现实网络安全化标准如今大部分的 B2B.B2C.P2P.O2O 等商业网站含有重要企业资料个人资料的信息资信网站 ...

  6. Java加密与解密笔记(三) 非对称加密

    非对称的特点是加密和解密时使用的是不同的钥匙.密钥分为公钥和私钥,用公钥加密的数据只能用私钥进行解密,反之亦然. 另外,密钥还可以用于数字签名.数字签名跟上文说的消息摘要是一个道理,通过一定方法对数据 ...

  7. java rsa加密解密_前端实现对请求参数进行RSA加密amp;解密,针对字符串过长进行分段加密amp;分段解密的处理...

    前言 在需求开发中,为了安全起见,我们都会难免遇到需要对一些敏感参数进行加密或者解密.所以,今天给大家分享的就是使用jsencrypt对请求参数进行RSA加密与解密,发这篇文章其实主要因为近期我的一位 ...

  8. python RSA加密、解密、签名

    python中用于RSA加解密的库有好久个,本文主要讲解rsa.M2Crypto.Crypto这三个库对于RSA加密.解密.签名.验签的知识点. 知识基础 加密是为了保证传输内容隐私,签名是为了保证消 ...

  9. 加密、解密、openssl的基本应用以及CA的实现过程

    随着互联网络的快速发展,已经把现代社会和互联网完全融合在一起了,随之而来的各种消息途径都要经过互联网传播,各种商业机密以及个人保密信息都要在互联网传播,那么怎样保证信息的保密性成了IT界比较头疼的一件 ...

最新文章

  1. 8月第4周国内IT网站/频道Top15:太平洋降至第三
  2. 「Python基础知识」Python中的封装有什么作用
  3. html报错页面,多页面配置生成的html报错
  4. 力扣题目——997. 找到小镇的法官
  5. 曼秀雷敦搜索引擎营销方案_搜索引擎营销——被严重低估的互联网营销途径
  6. std string 编码_【星云测试】Wings企业级单元测试自动编码引擎白皮书
  7. pku1363 Rails
  8. innobackupex: ibbackup failed at /usr/bin/innobackupex line 2560.
  9. 【JUC】JDK1.8源码分析之ReentrantReadWriteLock(七)
  10. Office 2007:另存为PDF或XPS
  11. echarts地图放大拖拽
  12. 如何去除Matlab里面的ans?
  13. Python应用练习题(第一期)——基本语句练习
  14. [python]打日语
  15. 五款值得你值得一试的优秀电脑软件推荐
  16. 【经济学_04】晨读:保险的实质 特效药 医疗膨胀 保险的发明
  17. 黑群晖Aria2下载BT,磁力amp;PT自用详细设置
  18. 五方法破解Linux(CentOS7.4)系统的root密码
  19. 「鸡尾酒排序」不会?每天一遍,排序再见【超详细】
  20. 达梦数据库sql优化实践2

热门文章

  1. c语言编程队列题,数据结构C语言编程 队列.doc
  2. UE4(虚幻4)基础:创建玩家角色并获得控制权
  3. 计算机类考研数据结构,【择校必看】十三所计算机专业课只考数据结构的985院校!...
  4. 事业单位计算机类专技岗职称,事业单位,专技岗晋升容易吗?
  5. Mathematica应用实例——查找面积最大的10个国家并在世界地图上进行标注
  6. 一个关于投资的顿悟,恍然大悟那种顿悟!
  7. 【自我管理篇】如何提高专注力
  8. 安卓手机的问题出在哪 -- 用户体验
  9. CarSim软件介绍(二)——车辆模型(传动系统)
  10. dongyangcan