C#中RSA加密与解密的实例详解
- 作者: 妹子有男友否
- 来源: 51数据库
- 2021-08-05
1. rsa加密与解密 -- 使用公钥加密、私钥解密
public class rsatool
{
public string encrypt(string strtext, string strpublickey)
{
rsacryptoserviceprovider rsa = new rsacryptoserviceprovider();
rsa.fromxmlstring(strpublickey);
byte[] bytetext = encoding.utf8.getbytes(strtext);
byte[] byteentry = rsa.encrypt(bytetext, false);
return convert.tobase64string(byteentry);
}
public string decrypt(string strentrytext,string strprivatekey)
{
rsacryptoserviceprovider rsa = new rsacryptoserviceprovider();
rsa.fromxmlstring(strprivatekey);
byte[] byteentry = convert.frombase64string(strentrytext);
byte[] bytetext = rsa.decrypt(byteentry, false);
return encoding.utf8.getstring(bytetext);
}
public dictionary<string,string> getkey()
{
dictionary<string, string> dictkey = new dictionary<string, string>();
rsacryptoserviceprovider rsa = new rsacryptoserviceprovider();
dictkey.add("publickey", rsa.toxmlstring(false));
dictkey.add("privatekey", rsa.toxmlstring(true));
return dictkey;
}
}
测试:
rsatool myrsa = new rsatool();
dictionary<string, string> dictk = new dictionary<string, string>();
dictk = myrsa.getkey();
string strtext = "123456";
console.writeline("要加密的字符串是:{0}", strtext);
string str1 = myrsa.encrypt("123456", dictk["publickey"]);
console.writeline("加密后的字符串:{0}", str1);
string str2 = myrsa.decrypt(str1, dictk["privatekey"]);
console.writeline("解密后的字符串:{0}", str2);

2. rsa加密与解密 -- 使用同一个密钥容器进行加密与解密
public class rsatoolx
{
public string encrypt(string strtext)
{
cspparameters csapars = new cspparameters();
csapars.keycontainername = "test001";
rsacryptoserviceprovider rsa = new rsacryptoserviceprovider(csapars);
byte[] bytetext = encoding.utf8.getbytes(strtext);
byte[] byteentry = rsa.encrypt(bytetext, false);
return convert.tobase64string(byteentry);
}
public string decrypt(string strentrytext)
{
cspparameters csapars = new cspparameters();
csapars.keycontainername = "test001";
rsacryptoserviceprovider rsa = new rsacryptoserviceprovider(csapars);
byte[] byteentry = convert.frombase64string(strentrytext);
byte[] bytetext = rsa.decrypt(byteentry, false);
return encoding.utf8.getstring(bytetext);
}
}
测试 :
rsatoolx myrsa = new rsatoolx();
string strtext = "123456";
console.writeline("要加密的字符串是:{0}", strtext);
string str1 = myrsa.encrypt("123456");
console.writeline("加密后的字符串:{0}", str1);
string str2 = myrsa.decrypt(str1);
console.writeline("解密后的字符串:{0}", str2);

总结
以上所述是小编给大家介绍的c#中rsa加密与解密的实例详解,希望对大家有所帮助
推荐阅读
- C#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
热点文章
团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
0
使用 MSBuild.exe 在发布模式下构建 C# 解决方案
0
当我发布 Web 应用程序时,AfterPublish 脚本不运行
0
构建时 T4 转换的产品仅在下一个构建中使用
0
ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
0
新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
0
如何将条件编译符号(DefineConstants)传递给 msbuild
0
MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
0
NuGet 包还原找不到包,没有源
0
使用 C# 6.0 功能运行 TFS 构建
0
