博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RSA加密
阅读量:4353 次
发布时间:2019-06-07

本文共 2756 字,大约阅读时间需要 9 分钟。

一、RSA加密简介

RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。通常个人保存私钥,公钥是公开的。

二、RSA加密流程如下

1.系统生成一对密钥(公钥和私钥)

2.系统将公钥告知客户

3.客户根据收到的公钥对数据进行加密,在发送给系统

4.系统收到加密后的数据,用私钥进行解密

1    public class RSA 2    { 3         ///  4         /// 生成密钥 5         ///  6         /// 私钥 7         /// 公钥 8         /// 密钥长度512,1024,2048,4096 9         public static void Generate(out string PrivateKey, out string PublicKey, int KeySize = 2048)10         {11             //初始化加密对象,并且设置密钥的长度12             RSACryptoServiceProvider serviceProvider = new RSACryptoServiceProvider(KeySize);13             //false 表示仅包含公钥。14             PublicKey = serviceProvider.ToXmlString(false);15             //true 表示同时包含 RSA 公钥和私钥16             PrivateKey = serviceProvider.ToXmlString(true);17         }18       /// 19         /// 加密20         /// 21         /// 公钥22         /// 待加密字符串23         /// 
24 public static string RSAEncrypt(string PublicKey, string EncryptString)25 {26 byte[] inputByArray;27 byte[] outPutByArray;28 string result;29 RSACryptoServiceProvider serviceProvider = new RSACryptoServiceProvider();30 serviceProvider.FromXmlString(PublicKey);31 inputByArray = Encoding.UTF8.GetBytes(EncryptString);32 outPutByArray = serviceProvider.Encrypt(inputByArray, false);33 result = Convert.ToBase64String(outPutByArray);34 return result;35 }36      /// 37 /// 解密38 /// 39 /// 私钥40 /// 待加密字符串41 ///
42 public static string RSADecrypt(string PrivateKey, string DecryptString)43 {44 byte[] inputByArray;45 byte[] outPutByArray;46 string result;47 RSACryptoServiceProvider serviceProvider = new RSACryptoServiceProvider();48 serviceProvider.FromXmlString(PrivateKey);49 inputByArray = Convert.FromBase64String(DecryptString);50 outPutByArray = serviceProvider.Decrypt(inputByArray, false);51 result = Encoding.UTF8.GetString(outPutByArray);52 return result;53 }54 55 }
1         static void Main(string[] args) 2         { 3             string PrivateKey; 4             string PublicKey; 5             RSA.Generate(out PrivateKey, out PublicKey); 6             Console.WriteLine("私钥的值:{0},公钥的值:{1}", PrivateKey, PublicKey); 7             var encryptResult = RSA.RSAEncrypt(PublicKey, "123456"); 8             var decryptResult = RSA.RSADecrypt(PrivateKey, encryptResult); 9             Console.WriteLine("加密后的值:{0},解密后的值:{1}", encryptResult, decryptResult);10         }

 

转载于:https://www.cnblogs.com/GreatPerson/p/11023187.html

你可能感兴趣的文章
17.centos7基础学习与积累-003-命令练习01
查看>>
Air Jordan 8 Retro Performance Review
查看>>
暑假生活第八周总结
查看>>
JQuery中的siblings()是什么意思
查看>>
(转)用graph-easy描绘kubenetes描绘k8s组件逻辑图
查看>>
thinkphp去掉index.php
查看>>
条件锁类
查看>>
request.getParameter()获取前台值为null
查看>>
路飞学城Python-Day186
查看>>
django Paginator分页插件
查看>>
关于APP自动化工程的一点小想法
查看>>
vc++post方式登录网站
查看>>
框架标签
查看>>
求职基础复习之冒泡排序c++版
查看>>
【TCP/IP】Ethernet II VS 802.3
查看>>
WebService学习总结(二)——WebService相关概念介绍
查看>>
webpack构建react应用三:使用webpack Loaders 模块加载器(一)
查看>>
Java JDBC
查看>>
走势终完美 --执子之手
查看>>
补全左括号
查看>>