這個就不說了,你們上網搜索都知道,公鑰加密,私鑰解密。固然你們也能夠本身實現。這裏就懶了,就去找一個現成的庫,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));
使用起來仍是比較方便的。有須要的小夥伴能夠去試試。加密