javaWeb RSA加密使用


 

加密算法在各個網站運用很平常,今天整理代碼的時候看到了我們項目中運用了RSA加密,就了解了一下。

先簡單說一下RSA加密算法原理,RSA算法基於一個十分簡單的數論事實:將兩個大質數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。

RSA的算法涉及三個參數,n、e1、e2。
其中, n是兩個大質數p、 q的積,n的二進制表示時所占用的位數,就是所謂的密鑰長度。
e1和e2是一對相關的值,e1可以任意取,但要求e1與(p-1)*(q-1)互質;再選擇e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n,e1),(n,e2)就是密鑰對。其中 (n,e1)為公鑰(n,e2)為私鑰。
RSAPublicKey rsap;
rsap = (RSAPublicKey) RSAUtil.getKeyPair().getPublic();
//
String module = rsap.getModulus().toString(16);
//公鑰指數
String empoent = rsap.getPublicExponent().toString(16);
request.setAttribute("m", module);
request.setAttribute("e", empoent);

 這是java代碼,簡單來說就是將模和公鑰指數傳回到前台頁面上,按我的理解module就是上面所說的nempoent也就是上面說的e1

接着是Javascript的處理,先引入3個js文件RSA.js,BigInt.js,Barrett.js(網上可以隨便找到)

function doEncrypt(){
  var result = $("#password").val();
  setMaxDigits(130);
   //3個參數,分別是公鑰指數,私鑰指數,module  (一般module是1024位的長度,私鑰肯定是不會傳到前台的)       
  key
= new RSAKeyPair("12345","","12a3d32ad");
  //生成密文   result
= encryptedString(key, encodeURIComponent(result));   $("#encrypt").attr("value", 1);   $("#pwd").attr("value", result); }

 之后就把生成的公鑰生成的公鑰傳回去就行了。

 

 RSAUtils.decryptByPrivateKey(mi, priKey);  

 然后把傳回去的密文通過私鑰進行解密就行了,大致過程就是這樣。

 

PS:本人是以登錄作為例子進行講解的。


免責聲明!

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



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