ArielCore.RSAUtil
1.0.0
dotnet add package ArielCore.RSAUtil --version 1.0.0
NuGet\Install-Package ArielCore.RSAUtil -Version 1.0.0
<PackageReference Include="ArielCore.RSAUtil" Version="1.0.0" />
<PackageVersion Include="ArielCore.RSAUtil" Version="1.0.0" />
<PackageReference Include="ArielCore.RSAUtil" />
paket add ArielCore.RSAUtil --version 1.0.0
#r "nuget: ArielCore.RSAUtil, 1.0.0"
#:package ArielCore.RSAUtil@1.0.0
#addin nuget:?package=ArielCore.RSAUtil&version=1.0.0
#tool nuget:?package=ArielCore.RSAUtil&version=1.0.0
RSAUtil
.NET Core RSA算法使用帮助工具,支持数据加密,解密,签名和验证签名,支持xml,pkcs1,pkcs8三种密钥格式,支持这三种格式的密钥转换。最后还支持pem格式化。
Nuget安装
Install-Package ArielCore.RSAUtil
文档
生成密钥
使用“RsaKeyGenerator”类。返回的结果是一个有两个元素的字符串的列表,元素1是私钥,元素2是公钥。
格式:XML
var keyList = RsaKeyGenerator.XmlKey(2048);
var privateKey = keyList [0];
var publicKey = keyList [1];
格式:Pkcs1
var keyList = RsaKeyGenerator.Pkcs1Key(2048);
var privateKey = keyList [0];
var publicKey = keyList [1];
格式:Pkcs8
var keyList = RsaKeyGenerator.Pkcs8Key(2048);
var privateKey = keyList [0];
var publicKey = keyList [1];
RSA密钥转换
使用“RsaKeyConvert”类。它支持这三种格式的密钥转换,即:xml,pkcs1,pkcs8。
XML-> Pkcs1:
- 私钥:
RsaKeyConvert.PrivateKeyXmlToPkcs1() - 公钥:
RsaKeyConvert.PublicKeyXmlToPem()
XML-> Pkcs8:
- 私钥:
RsaKeyConvert.PrivateKeyXmlToPkcs8() - 公钥:
RsaKeyConvert.PublicKeyXmlToPem()
Pkcs1-> XML:
- 私钥:
RsaKeyConvert.PrivateKeyPkcs1ToXml() - 公钥:
RsaKeyConvert.PublicKeyPemToXml()
Pkcs1-> Pkcs8:
- 私钥:
RsaKeyConvert.PrivateKeyPkcs1ToPkcs8() - 公钥:不需要转换
Pkcs8-> XML:
- 私钥:
RsaKeyConvert.PrivateKeyPkcs8ToXml() - 公钥:
RsaKeyConvert.PublicKeyPemToXml()
Pkcs8-> Pkcs1:
- 私钥:
RsaKeyConvert.PrivateKeyPkcs8ToPkcs1() - 公钥:不需要转换
加密,解密,签名和验证签名
XML,Pkcs1,Pkcs8分别对应类:
RsaXmlUtil,RsaPkcs1Util,RsaPkcs8Util。它们继承自抽象类RSAUtilBase
- 加密:RSAUtilBase.Encrypt()
- 解密:
RSAUtilBase.Decrypt() - Sign:
RSAUtilBase.SignData() - 验证:
RSAUtilBase.VerifyData()
PEM格式化
使用类“RsaPemFormatHelper”。
- 格式化Pkcs1格式私钥:
RsaPemFormatHelper.Pkcs1PrivateKeyFormat() - 删除Pkcs1格式私钥格式:
RsaPemFormatHelper.Pkcs1PrivateKeyFormatRemove() - 格式化Pkcs8格式私钥:
RsaPemFormatHelper.Pkcs8PrivateKeyFormat() - 删除Pkcs8格式的私钥格式:
RsaPemFormatHelper.Pkcs8PrivateKeyFormatRemove()
使用的开源组件
bc-csharp - onovotny
案例
dotnetrsa - DotnetRSA 是一个利用 .NET Core 2.1 开发的 .NET Global Tool,是可以想npm全局安装一样,安装在你的系统中,只需敲一行命令便可以快速生成RSA加密算法所需的秘钥,目前支持三种格式的秘钥,分别为:xml、pkcs1、pkcs8。它还支持三种格式秘钥的想换转换。
示例
static void Main(string[] args)
{
Console.WriteLine(2<<1);
Console.WriteLine(RsaKeyGenerator.XmlKey(2048)[0]);
Console.WriteLine(RsaKeyGenerator.Pkcs1Key(2048,true)[0]);
Console.WriteLine(RsaKeyGenerator.Pkcs8Key(2048,true)[0]);
Console.WriteLine("Key Convert:");
var keyList = RsaKeyGenerator.Pkcs1Key(512, false);
var privateKey = keyList[0];
var publicKey = keyList[1];
Console.WriteLine("public key pkcs1->xml:");
Console.WriteLine(RsaKeyConvert.PublicKeyPemToXml(publicKey));
var bigDataRsa=new RsaPkcs1Util(Encoding.UTF8, publicKey,privateKey,2048);
var data = "响应式布局的概念是一个页面适配多个终端及不同分辨率。在针对特定屏幕宽度优化应用 UI 时,我们将此称为创建响应式设计。WPF设计之初响应式设计的概念并不流行,那时候大部分网页设计师都按着宽度960像素的标准设计。到了UWP诞生的时候响应式布局已经很流行了,所以UWP提供了很多响应式布局的技术,这篇文章简单总结了一些响应式布局常用的技术,更完整的内容请看文章最后给出的参考网站。所谓的传统,是指在响应式设计没流行前XAML就已经存在的应对不同分辨率的技术,毕竟桌面客户端常常也调整窗体的大小,有些人还同时使用两个不同分辨率的屏幕。以我的经验来说以下这些做法可以使UI有效应对分辨率改变不同的DPI设定、不同的本地化字符串长度都可能使整个页面布局乱掉。而且和网页不同,WPF窗体默认没有提供ScrollViewer,所以千万不能忘记。在桌面客户端合理使用以上技术可以避免客户投诉。但UWP主打跨平台,它需要更先进(或者说,更激进)的技术。微软的官方文档介绍了UWP中响应式设计常用的6个技术,包括重新定位、调整大小、重新排列、显示/隐藏、替换和重新构建,具体可见以下网站:UWP中部分控件已经实现了响应式行为, 最典型的就是NavigationView。可以使用 PaneDisplayMode 属性配置不同的导航样式或显示模式。默认情况下,PaneDisplayMode 设置为 Auto。在 Auto 模式下,导航视图会进行自适应,在窗口狭窄时为 LeftMinimal,接下来为 LeftCompact,随后在窗口变宽时为 Left。这种时候MVVM的优势就体现出来了,因为VIEW和VIEWMODEL解耦了,VIEW随便换,而且整个UI显示隐藏说不定比多个小模块独自改变性能更好。说到性能,UWP的很多场景都为已经死了多年的WindowsWobile考虑了性能,更不用说现在的桌面平台,所以做UWP不需要太过介意性能,尤其是已经在WPF上培养出小心翼翼的习惯的开发者,UWP的性能问题等真的出现了再说。除了使用显示隐藏,UWP还可以使用限定符名称指定CodeBehind对应的XAML文件,这有点像是自适应应用的话题。使用格式如下";
var str = bigDataRsa.EncryptBigData(data, RSAEncryptionPadding.Pkcs1);
Console.WriteLine("Big Data Encrypt:");
Console.WriteLine(str);
Console.WriteLine("Big Data Decrypt:");
Console.WriteLine(string.Join("", bigDataRsa.DecryptBigData(str, RSAEncryptionPadding.Pkcs1)));
Console.ReadKey();
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- BouncyCastle.Cryptography (>= 2.5.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 256 | 3/31/2025 |