一,非对称加密

非对称加密具有一组密钥对,一个是对外公开的,任何人都可以获取,称为公钥;

一个是自行保管并严格保密的,称为私钥。

规则如下:

由某人A的公钥加密消息,只能由A的私钥进行解密;

由A的私钥加密的消息,只能由A的公钥解密。

发送方,接收方都持有公钥/私钥对,因此一共会有四个密钥。非堆成加密的好处在于,私钥自己持有,公钥完全公开。

二,加密模式

步骤:

1,接收方公布自己的公钥,任何人都可以获得。

2,发送方使用接收方的公钥对消息进行加密,然后发送。

3,接收方使用自己的私钥对消息进行解密。

缺点:

1,无法确定消息是由谁发送的。

三,加密模式Demo

/*//加密模式*/namespace 非对称加密
{class Program{static void Main(string[] args){string plainText = "hello world";string publicKey = "<RSAKeyValue><Modulus>qA89WuhLCmvYHJqw+mfjRZ6Ep8xuicvRkVWkuufRHBAmLgXt2lHThSSBsZhFEECHqvwGFF+OybGj1Ki72A3h056tM6yRNppJFaJGGrnsjsWPPNa14E6f+ZBvC/MZRISLGNTDxhbHuvNSMx+hLU+Skz+B75RCMoYuEOuP8GxFEqs=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";string encryptedText = RSACryptoHelper.Encrypt(publicKey, plainText);  //机密啦~~Console.WriteLine(encryptedText);string privateKey = "<RSAKeyValue><Modulus>qA89WuhLCmvYHJqw+mfjRZ6Ep8xuicvRkVWkuufRHBAmLgXt2lHThSSBsZhFEECHqvwGFF+OybGj1Ki72A3h056tM6yRNppJFaJGGrnsjsWPPNa14E6f+ZBvC/MZRISLGNTDxhbHuvNSMx+hLU+Skz+B75RCMoYuEOuP8GxFEqs=</Modulus><Exponent>AQAB</Exponent><P>7VxYssHAiMZtnVzgK3h3U9llNZSa5MCK4/iLvATQ5h3+yHegT0t+q2Tv844QUxcBPvkkrF+uvSb043Nw65KoTw==</P><Q>tUG739ddGWVrsBxle1ZmuABVBzeUNUiCOsbcGP/LsmbScdnk46rIfjVZ3NGlfptbAv4I7MPatr8Je1O5GL485Q==</Q><DP>ZyFXnJuYhxUILXZcJCccWb88PVKLFlceQb0NIa1KAqIHwJxReAKKT/f0VfNk3mVBclYX/Bk6uA7EGktfRcub+w==</DP><DQ>rLubBiNgBo6/hFJbZ6GcPCec4EbYB7s02DygjXZfsYEJdhQ3a7taW+QN4kEsHK6CmiRrbu7qpJMDvzK3R1wr/Q==</DQ><InverseQ>a0q3ffhjSHdaZW0QrkqZNUNSQ+j5/ltPS9zaJQiVhO2abaYaGwKaVVsbuD7cB+i4EasAw4uQHrk456Vkw/HQnw==</InverseQ><D>DyXIfvAfC2JrCTD8MKW6e2TtSf6IHA1t5y6T+XC5jVD7T/yi0qG7ce23bt1tpChc0hGDLsTqJs3HGXzX6YJez0Frz37UuNNsNyrhh3cAnxQuAwaCZMF7tPYOQbmgXP5OFpgaIjUmhMwysmm9WdrTocE6h39t5QlLy7g6xH9MJ+k=</D></RSAKeyValue>";string clearText = RSACryptoHelper.Decrypt(privateKey, encryptedText);  //解密Console.WriteLine(clearText);Console.ReadKey();}}public class RSACryptoHelper{#region 密钥获取方法——暂未封装进来//方法一://string privateKey= provider.ToXmlString(true);//获得公/私钥对//string publicKey= provider.ToXmlString(false);//获得公钥对//方法二://RSAParameters privateKey = provider.ExportParameters(true);//获得公钥私钥对//RSAParameters publicKey = provider.ExportParameters(false);//获得公钥#endregion/// <summary>/// 发送方加密/// </summary>/// <param name="publicKeyXml">The public key XML.</param>/// <param name="plainText">The plain text.</param>/// <returns>System.String.</returns>/// <remarks>Editor:v-liuhch CreateTime:2015/5/16 22:06:54</remarks>public static string Encrypt(string publicKeyXml, string plainText) {RSACryptoServiceProvider provider = new RSACryptoServiceProvider();provider.FromXmlString(publicKeyXml); //使用公钥初始化对象byte[] plainData = Encoding.Default.GetBytes(plainText);byte[] encryptedData = provider.Encrypt(plainData, true);//对数据进行加密return Convert.ToBase64String(encryptedData);}/// <summary>/// 接收方解密/// </summary>/// <param name="privateKeyXml">The private key XML.</param>/// <param name="encryptedText">The encrypted text.</param>/// <returns>System.String.</returns>/// <remarks>Editor:v-liuhch CreateTime:2015/5/16 22:11:09</remarks>public static string Decrypt(string privateKeyXml, string encryptedText) {RSACryptoServiceProvider provider = new RSACryptoServiceProvider();provider.FromXmlString(privateKeyXml);//使用私钥对数据进行初始化byte[] encryptedData = Convert.FromBase64String(encryptedText);byte[] plainData = provider.Decrypt(encryptedData, true);  //对数据进行解密string plainText = Encoding.Default.GetString(plainData);  //明文return plainText;}}
}

.Net加密与解密——非对称加密之加密模式相关推荐

  1. .Net加密与解密——非对称加密之数字签名

    一,从非对称加密的认证模式说起 由消息的发送方发布公钥,持有私钥. 步骤: 1,发送方公布自己的公钥,任何人都可以获得. 2,发送方使用自己的私钥对消息进行加密,然后发送. 3,接收方使用发送方的公钥 ...

  2. php unicode乱码加密,PHP解密Unicode及Escape加密字符串

    PHP解密Unicode及Escape加密字符串 function unicode2utf8($c) { $str=""; if ($c < 0x80) { $str.=ch ...

  3. python实现md5加密和解密_Python中的加密和解密

    1.base64 Python内置的base64模块可以实现base64.base32.base16.base85.urlsafe_base64的编码解码,python 3.x通常输入输出都是二进制形 ...

  4. php 中文加密如何解密,求教PHP中文加密解密代码

    加密 PHP 如何对字符串进行加密解密? 类似于BASE64_ENCODE / BASE64_DECODE,但是需要加密后的字符串更简短,最好可以三个字符代表一个中文. public $STRING_ ...

  5. ROT13加密与解密(一种加密和解密都会得到同样答案的密文)“替换式密码算法”

    一. ROT13简介: ROT13(回转13位)是一种简易的替换式密码算法.它是一种在英文网络论坛用作隐藏八卦.妙句.谜题解答以及某些脏话的工具,目的是逃过版主或管理员的匆匆一瞥.ROT13 也是过去 ...

  6. 怎么把计算机磁盘解密,Win10系统下怎样对磁盘进行加密、解密?Win10系统加密、解密磁盘图文教程...

    一些安装了Windows10系统的用户,为了更好地保护自己的个人隐私,会想要对电脑磁盘进行加密.那么,这该如何操作呢?下面小编就介绍下Windows10系统给磁盘加密.解密的具体方法. 具体方法如下: ...

  7. Java实现 LeetCode 535 TinyURL 的加密与解密(位运算加密)

    535. TinyURL 的加密与解密 TinyURL是一种URL简化服务, 比如:当你输入一个URL https://leetcode.com/problems/design-tinyurl 时,它 ...

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

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

  9. 使用OpenSSL进行RSA加密和解密(非对称)

    1. RSA加密和解密基础概念 RSA是一种非对称加密. RSA秘钥:私钥和公钥,一对私钥和公钥就像夫妻一样是唯一的,用私钥加密后必须用对应的公钥才能解密,用公钥加密后必须用对应的私钥才能解密. 加密 ...

最新文章

  1. AutoML的相关链接大全
  2. 《研磨设计模式》chap6 工厂模式factory(1)模式简介
  3. 回忆---中秋夜赴京城考OCP有感
  4. POJ2373-Dividing the Path【单调队列优化dp】
  5. 怎么让IIS支持PHP
  6. Baum-WELCH和vertibe解码算法
  7. BZOJ3224 Tyvj 1728 普通平衡树
  8. c语言 dll库是线程安全吗,vsprintf是线程安全的吗?解决思路
  9. Android音视频三-AndroidStudio整合FFmpeg项目+FFmpeg视频解码
  10. SQL Server根据地图坐标经纬度计算距离
  11. 软件测试——图书管理系统的测试计划书
  12. Youtube油管视频类别标签列表
  13. js导出excel格式错误的问题
  14. excel出现为了防止数据流失,无法移走非空单元格怎么办
  15. 中值定理5-泰勒中值定理
  16. fatal: unsafe repository (‘/home/anji/gopath/src/gateway‘ is owned by someone else)
  17. 拯救红米note3砖头
  18. png的计算机储存图片的格式吗,win7系统下png图片转换成jpg格式的三种方法
  19. Kettle 全量抽取数据
  20. Windows XP系统下建立V-PN服务器

热门文章

  1. Flash 与课件制作:视频播放
  2. linux编译安装icu,Icu+配置使用说明
  3. 【C】编一程序,将两个字符串连接起来,不要用strcat函数
  4. 大印文化:学习说服力一定要理解换框!
  5. 例解BITMAP的数据格式
  6. Object-C中的Category
  7. 电脑升级到WIN10后移动硬盘无法读取
  8. 好莱坞原则和IOC控制反转
  9. win10神州网信政府版系列设置(麦克风、摄像头、相机、屏幕保护时间)
  10. linux学习:解决Ubuntu运行时CPU温度过高导致自动关机保护