.Net加密与解密——非对称加密之加密模式
一,非对称加密
非对称加密具有一组密钥对,一个是对外公开的,任何人都可以获取,称为公钥;
一个是自行保管并严格保密的,称为私钥。
规则如下:
由某人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加密与解密——非对称加密之加密模式相关推荐
- .Net加密与解密——非对称加密之数字签名
一,从非对称加密的认证模式说起 由消息的发送方发布公钥,持有私钥. 步骤: 1,发送方公布自己的公钥,任何人都可以获得. 2,发送方使用自己的私钥对消息进行加密,然后发送. 3,接收方使用发送方的公钥 ...
- php unicode乱码加密,PHP解密Unicode及Escape加密字符串
PHP解密Unicode及Escape加密字符串 function unicode2utf8($c) { $str=""; if ($c < 0x80) { $str.=ch ...
- python实现md5加密和解密_Python中的加密和解密
1.base64 Python内置的base64模块可以实现base64.base32.base16.base85.urlsafe_base64的编码解码,python 3.x通常输入输出都是二进制形 ...
- php 中文加密如何解密,求教PHP中文加密解密代码
加密 PHP 如何对字符串进行加密解密? 类似于BASE64_ENCODE / BASE64_DECODE,但是需要加密后的字符串更简短,最好可以三个字符代表一个中文. public $STRING_ ...
- ROT13加密与解密(一种加密和解密都会得到同样答案的密文)“替换式密码算法”
一. ROT13简介: ROT13(回转13位)是一种简易的替换式密码算法.它是一种在英文网络论坛用作隐藏八卦.妙句.谜题解答以及某些脏话的工具,目的是逃过版主或管理员的匆匆一瞥.ROT13 也是过去 ...
- 怎么把计算机磁盘解密,Win10系统下怎样对磁盘进行加密、解密?Win10系统加密、解密磁盘图文教程...
一些安装了Windows10系统的用户,为了更好地保护自己的个人隐私,会想要对电脑磁盘进行加密.那么,这该如何操作呢?下面小编就介绍下Windows10系统给磁盘加密.解密的具体方法. 具体方法如下: ...
- Java实现 LeetCode 535 TinyURL 的加密与解密(位运算加密)
535. TinyURL 的加密与解密 TinyURL是一种URL简化服务, 比如:当你输入一个URL https://leetcode.com/problems/design-tinyurl 时,它 ...
- Java加密与解密笔记(三) 非对称加密
非对称的特点是加密和解密时使用的是不同的钥匙.密钥分为公钥和私钥,用公钥加密的数据只能用私钥进行解密,反之亦然. 另外,密钥还可以用于数字签名.数字签名跟上文说的消息摘要是一个道理,通过一定方法对数据 ...
- 使用OpenSSL进行RSA加密和解密(非对称)
1. RSA加密和解密基础概念 RSA是一种非对称加密. RSA秘钥:私钥和公钥,一对私钥和公钥就像夫妻一样是唯一的,用私钥加密后必须用对应的公钥才能解密,用公钥加密后必须用对应的私钥才能解密. 加密 ...
最新文章
- AutoML的相关链接大全
- 《研磨设计模式》chap6 工厂模式factory(1)模式简介
- 回忆---中秋夜赴京城考OCP有感
- POJ2373-Dividing the Path【单调队列优化dp】
- 怎么让IIS支持PHP
- Baum-WELCH和vertibe解码算法
- BZOJ3224 Tyvj 1728 普通平衡树
- c语言 dll库是线程安全吗,vsprintf是线程安全的吗?解决思路
- Android音视频三-AndroidStudio整合FFmpeg项目+FFmpeg视频解码
- SQL Server根据地图坐标经纬度计算距离
- 软件测试——图书管理系统的测试计划书
- Youtube油管视频类别标签列表
- js导出excel格式错误的问题
- excel出现为了防止数据流失,无法移走非空单元格怎么办
- 中值定理5-泰勒中值定理
- fatal: unsafe repository (‘/home/anji/gopath/src/gateway‘ is owned by someone else)
- 拯救红米note3砖头
- png的计算机储存图片的格式吗,win7系统下png图片转换成jpg格式的三种方法
- Kettle 全量抽取数据
- Windows XP系统下建立V-PN服务器