rsa加密算法使用示例分享

时间:2021-08-03 20:47:29 


产生私钥和公钥
System.Security.Cryptography.RSACryptoServiceProvider myrsa = new RSACryptoServiceProvider();
//得到私钥主要保存了RSAParameters中的8各参数
privateKey = myrsa.ToXmlString(true);
//得到公钥保存了RSAParameters中2个参数
publicKey = myrsa.ToXmlString(false);

RAS实现加密
System.Security.Cryptography.RSACryptoServiceProvider myrsa = new RSACryptoServiceProvider();
//得到公钥
myrsa.FromXmlString(publicKey);
//把你要加密的内容转换成byte[]
byte[] PlainTextBArray = (new UnicodeEncoding()).GetBytes("这里是你要加密的内容");
//使用.NET中的Encrypt方法加密
byte[] CypherTextBArray = myrsa.Encrypt(PlainTextBArray, false);
//最后吧加密后的byte[]转换成Base64String,这里就是加密后的内容了
Result = Convert.ToBase64String(CypherTextBArray)


RAS实现解密
System.Security.Cryptography.RSACryptoServiceProvider myrsa = new RSACryptoServiceProvider();
//得到私钥
myrsa.FromXmlString(xmlPrivateKey);
//把原来加密后的String转换成byte[]
byte[] PlainTextBArray = Convert.FromBase64String("刚才加密后的string");
//使用.NET中的Decrypt方法解密
byte[] DypherTextBArray = myrsa.Decrypt(PlainTextBArray, false);
//转换解密后的byte[],这就得到了我们原来的加密前的内容了
Result = (new UnicodeEncoding()).GetString(DypherTextBArray);


byte[] messagebytes = Encoding.UTF8.GetBytes("luo罗");
            RSACryptoServiceProvider oRSA = new RSACryptoServiceProvider();
            string privatekey = oRSA.ToXmlString(true);
            string publickey = oRSA.ToXmlString(false);

            //私钥签名 
            RSACryptoServiceProvider oRSA3 = new RSACryptoServiceProvider();
            oRSA3.FromXmlString(privatekey);
            byte[] AOutput = oRSA3.SignData(messagebytes, "SHA1");
            //公钥验证 
            RSACryptoServiceProvider oRSA4 = new RSACryptoServiceProvider();
            oRSA4.FromXmlString(publickey);
            bool bVerify = oRSA4.VerifyData(messagebytes, "SHA1", AOutput);

标签:rsa加密算法
0
投稿

猜你喜欢

  • Java源码解析之ClassLoader

    2022-06-14 06:07:47
  • Spring中Bean的生命周期使用解析

    2021-09-06 23:06:54
  • Java实现分布式系统限流

    2022-05-31 22:38:05
  • java中的静态代码块、构造代码块、构造方法详解

    2023-06-18 12:11:32
  • 关于Mybatis-Plus Wrapper是否应该出现在Servcie类中

    2023-11-28 22:04:56
  • 详解SpringBoot多跨域请求的支持(JSONP)

    2023-09-21 04:12:54
  • Java StringUtils字符串分割转数组的实现

    2023-07-19 12:43:37
  • 浅谈springioc实例化bean的三个方法

    2022-05-18 08:37:56
  • java实现斗地主发牌功能

    2022-01-14 14:27:32
  • SpringCloud之Config配置中心与Redis分布式锁详解

    2023-12-21 02:14:41
  • springboot2.0如何通过fastdfs实现文件分布式上传

    2022-03-20 16:49:24
  • Java基于注解的Excel导出方式

    2021-12-31 04:55:08
  • IDEA SpringBoot项目配置热更新的步骤详解(无需每次手动重启服务器)

    2023-11-12 00:22:41
  • Java毕业设计实战之平行志愿管理系统的实现

    2023-09-12 14:34:23
  • Android RecyclerBarChart绘制使用教程

    2023-06-19 12:18:36
  • Day14基础不牢地动山摇-Java基础

    2023-03-21 09:04:46
  • 浅谈自定义校验注解ConstraintValidator

    2023-07-06 03:10:53
  • C#枚举类型与位域枚举Enum

    2023-03-02 06:52:27
  • Java 执行CMD命令或执行BAT批处理方式

    2022-10-15 03:57:38
  • SpringBoot下如何实现支付宝接口的使用

    2023-11-06 14:26:15
  • asp之家 软件编程 m.aspxhome.com