整合一個基於c#的RSA私鑰加密公鑰解密的Helper類,含源碼


轉自:http://www.cnblogs.com/yyl8781697/archive/2013/04/28/RSA.html

 最近在搞單點登錄的設計,在設計中需要一個Token令牌的加密傳輸,這個令牌在整個連接單點的各個站中起着連接認證作用,如果被仿造將會有不可預計的損失,但是這個Token是要可逆的.然后我就找.net中的各種加密,各種找。

        因為是可逆的,所以像那種md5,sha之類的不可逆加密就沒法用了,然后可逆的加密主要是分為對稱加密盒非對稱加密:

        對稱加密:用加密的鑰匙來解密,比如DES,AES的加解密

       非對稱加密:一個鑰匙加密,用另一個鑰匙解密,這個主要就是RSA比較成熟(點我看科普)

       當然這么看來非對稱加密更加適合我這個需求,然后我又各種找RSA,.NET中自己實現了加密RSA加密類RSACryptoServiceProvider,但是這個用起來着實不爽,公鑰和私鑰是用xml來顯示,太長太大,而且由於沒有實現一些標准,只能用公鑰加密,私鑰解密(這個XML種私鑰中可以看出公鑰),但是事實上RSA的一對有效密鑰公鑰加密私鑰解密  和私鑰加密公鑰解密均可  我想要的是后面的效果啊,結果又繼續各種找,在找了好久看不到希望之際時,在csdn和博客園上看到了這兩篇文章:

     基於私鑰加密公鑰解密的RSA算法C#實現

     C#使用RSA私鑰加密公鑰解密的改進,解決特定情況下解密后出現亂碼的問題

      這兩個正好可以實現我的需求,但是上面的代碼都不全,說的倒是很清楚了,就是說利用一個開源的大數組處理類Bigingegter類配合RSA的算法自己顯示RSA的加解密,問題也解決的很到位了,單個文章中提供的資料都不好進行加解密,但是合起來就ok了,他們那個用的不爽,自己就在他們的基礎上又封裝了一個幫助類:

       (我僅僅只是整合了他們的代碼,方便自己用而已,嘿嘿,核心代碼還是他們的)

      按他們說的,先要產生密鑰對,當然這個密鑰對不是隨便寫的,是需要大質數  又素數啥啥啥的,不過RSACryptoServiceProvider這個類里面可以生成這些,還不錯,先看下我生成的密鑰對:

       

View Code

主要是對生成的byte數組拼接成字符串(畢竟還是字符串給別人比較方便):因為公鑰和私鑰都是兩個byte一起用才能加解密,所以將兩個byte數組拼接成一個byte,把並添加一個標志位來使得后期可以解開,最后以base64字符串來傳

有了自己封裝的密鑰之后

再封裝類似AES,DES這種簡單的入參進行加減密(不然傳BitIngteger真心累)

View Code

這樣的話 用戶用起來就很方便了  直接源碼/加密碼   +密鑰就可以加解密了

使用方式如下

View Code

是不是簡單又熟悉 ,下面來看一下效果

具體的代碼解釋就不說了 都有注釋了,下面給個源碼吧,不然片段的代碼拼接起來出錯概率很高的

猛擊我去下載RSA私鑰加密 公鑰解密的源碼

      在不足之處請大家指導哦,再次感謝csdn和博客園的那兩篇非常有用的代碼文章

       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM