介紹一個很好用的Rsa加解密的.Net庫 Kalix.ApiCrypto

Rsa非對稱加密技術

這個就不說了,你們上網搜索都知道,公鑰加密,私鑰解密。固然你們也能夠本身實現。這裏就懶了,就去找一個現成的庫,Nuget上搜索,GitHub上搜索,發現.Net的加解密庫,下載量,活躍度都不錯的庫不多。看到一個很是厲害的加解密庫,可是這個是要收費的,因此你懂的。
而後在github上看到了一個還不錯的庫Kalix.ApiCryptogit

Kalix.ApiCrypto

做者的代碼中有單元測試,能看懂個大概,我這裏仍是就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);

使用RSA加解密

從文件加載私鑰,或者從證書管理器加載私鑰都很方便,我這裏私鑰已經導入到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));

使用起來仍是比較方便的。有須要的小夥伴能夠去試試。加密

相關文章
相關標籤/搜索