.NET和java的RSA互通,僅此而已
.NET和java的RSA互通,僅此而已
在開始這篇文章之前,先請讀者朋友閱讀老唐的這兩篇文章:
1、Java與.Net環境下RSA加密解密互動不成功的問題解決
2、Java與.Net環境下RSA加密解密互動不成功的問題解決【續】
和我的這篇文章
前面老唐的兩篇文章中提到,要想實現.NET和Java的RSA互通,只能拋棄.NET現有的加密演算法,而是利用 http://www.codeproject.com/csharp/biginteger.asp 專案中的BigInteger類(.NET Framework4中已增加了這個類的實現,在System.Numberic名稱空間中),這個BigInteger類實際上就是仿照著java的BigInteger類來寫的。
利用這個類的確可以很好的實現RSA的加解密,比如,在.NET端,構建一個公鑰對應的BigInteger e、一個模對應的BigInteger n和一個明文對應的BigInteger m,然後執行語句BigInteger c=m.modPow(e,n),便可以實現加密操作,密文為c,這樣的加密是標準加密,沒有附加任何填充演算法的加密。
老唐的文章中說,不能互通是因為加密標準不一樣,導致一方加密而另一方不能解密,其實不然,.NET採用的加密標準是PKCS1Padding(或OAEPPadding——只支援XP以上版本),這也是我在前面一篇文章中提到的一種填充演算法,而java同樣支援這一填充標準,既然可以遵循統一的標準,那麼.NET和java的RSA互通,無需新增任何新程式碼便可以輕鬆實現!
請看下面的示例(.NET端加密,Java端解密):
Java端程式碼:
Java端演示截圖
.NET端程式碼:
.NET端演示截圖:
接下來的示例是(java端加密,.NET端解密):
.net端程式碼:
Java端程式碼:
相關文章
- RSA加密解密(無資料大小限制,php、go、java互通實現)加密解密PHPGoJava
- Porting .Net RSA xml keys to JavaXMLJava
- 吐槽net下沒有靠譜的FastDFS的sdk之使用thrift實現JAVA和C#互通ASTJavaC#
- java RSA 解密Java解密
- Java實現AES和RSA演算法Java演算法
- java與php的md5互通JavaPHP
- C#和JAVA的RSA金鑰、公鑰轉換C#Java
- C#與Java的RSA(3)C#Java
- 把Java生成的RSA公鑰、私鑰轉換成.NET使用的XML格式JavaXML
- php與java互通aes_encryptPHPJava
- Java RSA (SHA1withRSA)簽名和驗籤Java
- Java RSA 分段加解密Java解密
- [譯] Google Play 控制檯指南:Google Play 控制檯能為你做的都不僅僅是釋出應用這麼簡單而已Go
- 唯專而已
- Java之RSA加解密解析Java解密
- python中rsa的RSAPython
- 程式設計師的“三十而已”程式設計師
- Java不僅僅是Java:盤點執行在JVM下的其他9種語言JavaJVM
- 神奇的Cookie互通魔法Cookie
- 使用.net standard實現不同內網埠的互通(類似花生殼)內網
- 虛擬機器和宿主之間的網路互通虛擬機
- Android、Java RSA加密踩坑記AndroidJava加密
- JAVA/PHP/C#版RSA驗籤JavaPHPC#
- EvolvingNetLib,嗯,一個網路請求庫而已
- php中aes加密和rsa加密的區別PHP加密
- rsa加密概念和license總結加密
- .NET CORE 6 API與原生微信小程式資料互通教程API微信小程式
- 華為的Java面試題,僅供參考。Java面試題
- docker 容器互通Docker
- java程式設計之:生成rsa金鑰Java程式設計
- 重要 | Spark和MapReduce的對比,不僅僅是計算模型?Spark模型
- 此方法顯式使用的 CAS 策略已被 .NET Framework 棄用Framework
- AlphaGo Zero,一次成功的炒作而已?Go
- Java和.NET的GZIP壓縮功能對比Java
- 一些總結而已
- Mac OS上執行openssl命令操作,生成RSA私鑰和RSA公鑰Mac
- Mininet主機與真實網路互通方案實現
- RSA的傻瓜原理