这个就不说了,你们上网搜索都知道,公钥加密,私钥解密。固然你们也能够本身实现。这里就懒了,就去找一个现成的库,Nuget上搜索,GitHub上搜索,发现.Net的加解密库,下载量,活跃度都不错的库不多。看到一个很是厉害的加解密库,可是这个是要收费的,因此你懂的。
而后在github上看到了一个还不错的库Kalix.ApiCrypto。git
做者的代码中有单元测试,能看懂个大概,我这里仍是就RSA的加解密说一下这个库怎么用,毕竟都是英文的,这个库也没有太多的学习资料。github
做者很友好的封装了证书生成的方法,包括公钥和私钥,代码以下:windows
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);
从文件加载私钥,或者从证书管理器加载私钥都很方便,我这里私钥已经导入到windows证书管理器中,能够经过命令来查看api
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);
获取到加解密对象以后,就能够进行加密解密了ui
var data = "HelloWorld"; var bytes = publiccert.EncryptValue(Encoding.UTF8.GetBytes(data)); var data2 = Encoding.UTF8.GetString(privateCert.DecryptValue(bytes));
使用起来仍是比较方便的。有须要的小伙伴能够去试试。加密