zoukankan
html css js c++ java
基于RSA的加密/解密示例C#代码
/**/
/*
* 基于RSA的加密/解密示例C#代码
* (采用字符串作为参数)RSA_Demo2
*
* 夏春涛 Email:xChuntao@163.com
* Blog:
http://bluesky521.cnblogs.com
* 运行环境:.net2.0 framework
*
* 备注:
* 不对称算法通常用于加密少量数据,如加密对称密钥和 IV。通常,
* 执行不对称加密的个人使用由另一方生成的公钥。.NET Framework
* 为此目的而提供了 RSACryptoServiceProvider 类。
*/
using
System;
using
System.Security.Cryptography;
using
System.Text;
class
RSACSPSample
{
static
void
Main()
{
try
{
string
str_Plain_Text
=
"
How are you?How are you?How are you?How are you?=-popopolA
"
;
Console.WriteLine(
"
明文:
"
+
str_Plain_Text);
Console.WriteLine(
"
长度:
"
+
str_Plain_Text.Length.ToString());
Console.WriteLine();
RSACryptoServiceProvider RSA
=
new
RSACryptoServiceProvider();
string
str_Public_Key;
string
str_Private_Key;
string
str_Cypher_Text
=
RSA_Encrypt(str_Plain_Text,
out
str_Public_Key,
out
str_Private_Key);
Console.WriteLine(
"
密文:
"
+
str_Cypher_Text);
Console.WriteLine(
"
公钥:
"
+
str_Public_Key);
Console.WriteLine(
"
私钥:
"
+
str_Private_Key);
string
str_Plain_Text2
=
RSA_Decrypt(str_Cypher_Text, str_Private_Key);
Console.WriteLine(
"
解密:
"
+
str_Plain_Text2);
Console.WriteLine();
}
catch
(ArgumentNullException)
{
Console.WriteLine(
"
Encryption failed.
"
);
}
}
//
RSA加密,随机生成公私钥对并作为出参返回
static
public
string
RSA_Encrypt(
string
str_Plain_Text,
out
string
str_Public_Key,
out
string
str_Private_Key)
{
str_Public_Key
=
""
;
str_Private_Key
=
""
;
UnicodeEncoding ByteConverter
=
new
UnicodeEncoding();
byte
[] DataToEncrypt
=
ByteConverter.GetBytes(str_Plain_Text);
try
{
RSACryptoServiceProvider RSA
=
new
RSACryptoServiceProvider();
str_Public_Key
=
Convert.ToBase64String(RSA.ExportCspBlob(
false
));
str_Private_Key
=
Convert.ToBase64String(RSA.ExportCspBlob(
true
));
//
OAEP padding is only available on Microsoft Windows XP or later.
byte
[] bytes_Cypher_Text
=
RSA.Encrypt(DataToEncrypt,
false
);
str_Public_Key
=
Convert.ToBase64String(RSA.ExportCspBlob(
false
));
str_Private_Key
=
Convert.ToBase64String(RSA.ExportCspBlob(
true
));
string
str_Cypher_Text
=
Convert.ToBase64String(bytes_Cypher_Text);
return
str_Cypher_Text;
}
catch
(CryptographicException e)
{
Console.WriteLine(e.Message);
return
null
;
}
}
//
RSA解密
static
public
string
RSA_Decrypt(
string
str_Cypher_Text,
string
str_Private_Key)
{
byte
[] DataToDecrypt
=
Convert.FromBase64String(str_Cypher_Text);
try
{
RSACryptoServiceProvider RSA
=
new
RSACryptoServiceProvider();
//
RSA.ImportParameters(RSAKeyInfo);
byte
[] bytes_Public_Key
=
Convert.FromBase64String(str_Private_Key);
RSA.ImportCspBlob(bytes_Public_Key);
//
OAEP padding is only available on Microsoft Windows XP or later.
byte
[] bytes_Plain_Text
=
RSA.Decrypt(DataToDecrypt,
false
);
UnicodeEncoding ByteConverter
=
new
UnicodeEncoding();
string
str_Plain_Text
=
ByteConverter.GetString(bytes_Plain_Text);
return
str_Plain_Text;
}
catch
(CryptographicException e)
{
Console.WriteLine(e.ToString());
return
null
;
}
}
}
备注:经测试明文长度超过58时会出现异常.
源码附件:
/Files/bluesky521/RSA_Demo.rar
查看全文
相关阅读:
java学习路线:给大家讲一个笑话
谈谈关于IT劳务派遣与人力资源外包的区别!附劳务人力报酬管理目录
智能化时代来临,CFO们如何才能更管理企业财务!
谈谈关于创业者和股东成立公司如何出资,出资方式有哪些!附税务管理学习目录
【创业者关注】初创企业如何节税,节税需要注意哪些?
谈谈关于财务信息化水平最高的企业是怎样
谈谈关于技术时代会计信息化的新变革
谈谈关于IT创业者需要了解初创公司哪些财务管理的常识!
通过 ML.NET 使用预训练残差网络 ResNet 模型实现手势识别
1025. 除数博弈-动态规划-简单
原文地址:https://www.cnblogs.com/SummerRain/p/1011990.html
最新文章
PAT-2020年春季考试_2020.07.22_线上模拟_甲级1087-1090_心得+题解
Navicat premium 新建/修改数据库用户,并添加/设置权限
Python——Django连接mysql可视化问题
BEA-150000 [Root exception is java.rmi.NoSuchObjectException: The object identified by: '31' could not be found
Weblogic 打补丁冲突检测慢---解决方法
MySQL8.0.21 root 密码登陆不入-ERROR 1045(28000) Access denied for user 'root'@'localhost' (using password YES)
mysqldump -8.0.21版本导出报错
gtid 开启情况下数据的导入导出
JavaScript sort不生效时
git配置代理操作
热门文章
项目经理如何应对项目管理中的挑战?
项目进度延期的关键因素和应对措施
多项目同时进行,如何确保项目进度
项目经理快速成长的五个要点
项目管理:项目经理的四大挑战
听说,这都是项目经理要做的
离职率高?企业为什么留不住人
为什么别人升职加薪,你还在原地踏步
产品经理如何从0到1
制定项目计划,确保团队协同效率按时完成任务
Copyright © 2011-2022 走看看