javascript版前端頁面RSA非對稱加密解密

最近因爲項目須要作一個url傳參,並在頁面顯示參數內容的需求,這樣就會遇到一個url地址可能會被假冒,javascript

並傳遞非法內容顯示在頁面的尷尬狀況html

好比xxx.shtml?server=xxx是壞人&name=xxxoojava

這個url被人篡改胡亂發出去,追究責任仍是要追究到網站負責人的。jquery

因而想起來用加密url參數的方法,最早想到的是用base64加密參數,可是這樣有點錢的知識的人,在js裏面看app

到如何解密,就知道怎麼加密了,url仍是能胡亂僞造後來仔細思量加密,非對稱加密,一閃而過,在網上找了測試

一下相關資料,發現有javascript版本的RSA非對稱加密,大概看下如何使用,最終發現可用。網站

廢話完畢,直接上代碼:ui

 

<!DOCTYPE html>
<html>
<head>
  <title>javascript非對稱加密(RSA)JSEncrypt Example</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <script src="js/jquery-3.2.1.min.js"></script>
  <script type="text/javascript" src="js/jsencrypt.js"></script>
</head>
<body>

<div class="container">

<label for="privkey">Private Key</label><br/>
<textarea id="privkey" rows="15" cols="65">-----BEGIN RSA PRIVATE  KEY-----
MIICXQIBAAKBgQDlOJu6TyygqxfWT7eLtGDwajtNFOb9I5XRb6khyfD1Yt3YiCgQ
WMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76xFxdU6jE0NQ+Z+zEdhUTooNR
aY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4gwQco1KRMDSmXSMkDwIDAQAB
AoGAfY9LpnuWK5Bs50UVep5c93SJdUi82u7yMx4iHFMc/Z2hfenfYEzu+57fI4fv
xTQ//5DbzRR/XKb8ulNv6+CHyPF31xk7YOBfkGI8qjLoq06V+FyBfDSwL8KbLyeH
m7KUZnLNQbk8yGLzB3iYKkRHlmUanQGaNMIJziWOkN+N9dECQQD0ONYRNZeuM8zd
8XJTSdcIX4a3gy3GGCJxOzv16XHxD03GW6UNLmfPwenKu+cdrQeaqEixrCejXdAF
z/7+BSMpAkEA8EaSOeP5Xr3ZrbiKzi6TGMwHMvC7HdJxaBJbVRfApFrE0/mPwmP5
rN7QwjrMY+0+AbXcm8mRQyQ1+IGEembsdwJBAN6az8Rv7QnD/YBvi52POIlRSSIM
V7SwWvSK4WSMnGb1ZBbhgdg57DXaspcwHsFV7hByQ5BvMtIduHcT14ECfcECQATe
aTgjFnqE/lQ22Rk0eGaYO80cc643BXVGafNfd9fcvwBMnk0iGX0XRsOozVt5Azil
psLBYuApa66NcVHJpCECQQDTjI2AQhFc1yRnCU/YgDnSpJVm1nASoRUnU8Jfm3Oz
uku7JUXcVpt08DFSceCEX9unCuMcT72rAQlLpdZir876
-----END RSA PRIVATE KEY-----</textarea><br/>
<label for="pubkey">Public Key</label><br/>
<textarea id="pubkey" rows="15" cols="65">-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlOJu6TyygqxfWT7eLtGDwajtN
FOb9I5XRb6khyfD1Yt3YiCgQWMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76
xFxdU6jE0NQ+Z+zEdhUTooNRaY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4
gwQco1KRMDSmXSMkDwIDAQAB
-----END PUBLIC KEY-----</textarea><br/>

<div class="tool">
  輸入須要加密文字:<br/>
  <textarea name="" id="needCrypt" cols="30" rows="10">測試XXXX</textarea>
  <a href="javascript:void(0);" id="crypt-btn">加密</a><br/>
  加密結果:<br/>
  <textarea name="" id="resultCrypt" cols="30" rows="10">
    
  </textarea>
  <a href="javascript:void(0);" id="decrypt-btn">解密</a><br/>
  解密結果:<br/>
  <textarea name="" id="result" cols="30" rows="10">    
  </textarea>
</div>

  <script type="text/javascript">

  // Call this code when the page is done loading.
  $(function() {
      $("#crypt-btn").click(function(){
          // Encrypt with the public key...
          var encrypt = new JSEncrypt();
          encrypt.setPublicKey($('#pubkey').val());
          var encrypted = encrypt.encrypt($("#needCrypt").val());
          document.getElementById("resultCrypt").innerText = encrypted;
      });
      $("#decrypt-btn").click(function(){
          // Decrypt with the private key...
          var decrypt = new JSEncrypt();
          decrypt.setPrivateKey($('#privkey').val());
          var uncrypted = decrypt.decrypt($("#resultCrypt").val());
          document.getElementById("result").innerText = uncrypted;
      });      
  });
</script>

</div>
</body>
</html>

下載this

示例:RSA非對稱加密示例加密

相關文章
相關標籤/搜索