介绍一个很好用的Rsa加解密的.Net库 Kalix.ApiCrypto
Rsa非对称加密技术
这个就不说了,大家上网搜索都知道,公钥加密,私钥解密。当然大家也可以自己实现。这里就懒了,就去找一个现成的库,Nuget上搜索,GitHub上搜索,发现.Net的加解密库,下载量,活跃度都不错的库很少。看到一个非常厉害的加解密库,但是这个是要收费的,所以你懂的。
然后在github上看到了一个还不错的库Kalix.ApiCrypto。
Kalix.ApiCrypto
作者的代码中有单元测试,能看懂个大概,我这里还是就RSA的加解密说一下这个库怎么用,毕竟都是英文的,这个库也没有太多的学习资料。
证书生成
作者很友好的封装了证书生成的方法,包括公钥和私钥,代码如下:
var cert = RSACertificateBuilder.CreateNewCertificate("测试证书");
//导出私钥
var privateData = cert.Export(X509ContentType.Pkcs12, "5566");
File.WriteAllBytes(Path.GetFullPath("private.pfx"), privateData);
//导出公钥
var publicData = cert.Export(X509ContentType.Cert);
File.WriteAllBytes(Path.GetFullPath("public.cert"), publicData);
使用RSA加解密
从文件加载私钥,或者从证书管理器加载私钥都很方便,我这里私钥已经导入到windows证书管理器中,可以通过命令来查看
cmd->certmgr.msc
从证书管理器加载私钥代码如下:
var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
var privatePfx = store.Certificates.Find(X509FindType.FindBySubjectName, "测试证书", false)[0];
store.Close();
公钥就从文件目录中加载
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "public.cert");
var cert2 = new X509Certificate2(path);
我们这里得到的公钥还是私钥,都是X509Certificate2对象类型,那么Kalix.ApiCrypto直接封装了一个类RSACertificateParser,可以通过这个类根据证书获取到对应的加解密对象。
//获取私钥的加解密对象
var privateCert = RSACertificateParser.ParsePrivateCertificate(privatePfx);
//获取公钥的加解密对象
var publiccert = RSACertificateParser.ParsePublicCertificate(cert2);
获取到加解密对象之后,就可以进行加密解密了
var data = "HelloWorld";
var bytes = publiccert.EncryptValue(Encoding.UTF8.GetBytes(data));
var data2 = Encoding.UTF8.GetString(privateCert.DecryptValue(bytes));
使用起来还是比较方便的。有需要的小伙伴可以去试试。
介绍一个很好用的Rsa加解密的.Net库 Kalix.ApiCrypto的更多相关文章
- RSA算法原理——(3)RSA加解密过程及公式论证
上期(RSA简介及基础数论知识)为大家介绍了:互质.欧拉函数.欧拉定理.模反元素 这四个数论的知识点,而这四个知识点是理解RSA加密算法的基石,忘了的同学可以快速的回顾一遍. 一.目前常见加密算法简介 ...
- 全面解决.Net与Java互通时的RSA加解密问题,使用PEM格式的密钥文件
作者: zyl910 一.缘由 RSA是一种常用的非对称加密算法.所以有时需要在不用编程语言中分别使用RSA的加密.解密.例如用Java做后台服务端,用C#开发桌面的客户端软件时. 由于 .Net.J ...
- 【go语言】RSA加解密
关于go语言的RSA加解密的介绍,这里有一篇文章,已经介绍的很完整了. 对应的go语言的加解密代码,参考git. 因为原文跨语言是跟php,我这里要跟c语言进行交互,所以,这里贴上c语言的例子. 参考 ...
- C# 中使用 RSA加解密算法
一.什么是RSA RSA公开密钥密码体制.所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制. 在公开密钥密码体制中,加密密钥(即 ...
- PHP RSA加解密示例(转)
1.生成密钥和公钥 开始前需要准备openssl环境 linux 需要安装openssl工具包,传送门http://www.openssl.org/source/ window 下需要安装openss ...
- Lua 中的 RSA 加解密实现
记得之前,部门某款游戏陆陆续续收到一些玩家反馈,抱怨在登录游戏时会等待很久.初步排查后基本断定可能是此游戏的登录服务器程序某块代码有问题,于是即安排了服务器同事作排查分析但一直无果. 之后我时间有了空 ...
- 【转】 Java 进行 RSA 加解密时不得不考虑到的那些事儿
[转] Java 进行 RSA 加解密时不得不考虑到的那些事儿 1. 加密的系统不要具备解密的功能,否则 RSA 可能不太合适 公钥加密,私钥解密.加密的系统和解密的系统分开部署,加密的系统不应该同时 ...
- rsa加解密的内容超长的问题解决
一. 现象: 有一段老代码用来加密的,但是在使用key A的时候,抛出了异常:javax.crypto.IllegalBlockSizeException: Data must not be ...
- Rsa加解密Java、C#、php通用代码 密钥转换工具
之前发了一篇"TripleDes的加解密Java.C#.php通用代码",后面又有项目用到了Rsa加解密,还是在不同系统之间进行交互,Rsa在不同语言的密钥格式不一样,所以过程中主 ...
随机推荐
- XML解析,出现ClassCastException 原因
import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.Docum ...
- Java探索之旅(8)——继承与多态
1父类和子类: ❶父类又称基类和超类(super class)子类又称次类和扩展类.同一个package的子类可以直接(不通过对象)访问父类中的(public,缺省,protected)数据和方法. ...
- jprofiler9.1.1 安装与配置
一.安装部分 安装包: 1.jprofiler_linux_9_1_1.rpm 2.jprofiler_windows-x64_9_1_1.exe 需要注意的是,Linux 和 Windows 安装的 ...
- js链表操作
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 报错:Caused by: org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): cn.itcast.bos.domain.base.SubArea
因为 实体类中的主键 是String类型 不能自动为其分配id 所以需要手动设置在service层 model.setId(UUID.randomUUID().toString());
- 8、泛型程序设计与c++标准模板库2.2向量容器
向量容器属于顺序容器,用于容纳不定长线性序列(即线性群体),提供对序列的快速随机访问(也称直接访问).这一点与c++语言支持的基本数组类型相同,但基本数据类型不是面向对象的.而面向对象的向量是动态结构 ...
- http://lorempixel.com/ 可以快速产生假图
http://lorempixel.com/可以快速产生假图
- ABC118D(DP,完全背包,贪心)
#include<bits/stdc++.h>using namespace std;int cnt[10]={0,2,5,5,4,5,6,3,7,6};int dp[10007];int ...
- hdu6070(分数规划/二分+线段树区间更新,区间最值)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6070 题意: 给出一个题目提交序列, 从中选出一个正确率最小的子串. 选中的子串中每个题目当且仅当最 ...
- MCP|DYM|Quantitative mass spectrometry to interrogate proteomic heterogeneity in metastatic lung adenocarcinoma and validate a novel somatic mutation CDK12-G879V (利用定量质谱探究转移性肺腺瘤的蛋白质组异质性及验证新体细胞突变)
文献名:Quantitative mass spectrometry to interrogate proteomic heterogeneity in metastatic lung adenoca ...