javascript将url中的参数加密解密代码

 更新时间:2014年11月17日 11:27:11   投稿:hebedich  
本文给大家分享一段给url参数加密解密的javascript代码,非常的好用,有需要的小伙伴直接拿走吧

今天在做一个老项目时,遇到一个需求,在javascript将url中的参数加密解密,从网上找发现了这段有用的代码:

复制代码 代码如下:

<SCRIPT LANGUAGE="JavaScript">   
<!-- Begin   
function Encrypt(str, pwd) {   
    if(str=="")return "";   
    str = escape(str);   
    if(!pwd || pwd==""){ var pwd="1234"; }   
    pwd = escape(pwd);   
      if(pwd == null || pwd.length <= 0) {   
        alert("Please enter a password with which to encrypt the message.");   
          return null;   
      }   
      var prand = "";   
      for(var I=0; I<pwd.length; I++) {   
        prand += pwd.charCodeAt(I).toString();   
      }   
      var sPos = Math.floor(prand.length / 5);   
      var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos*2) + prand.charAt(sPos*3) + prand.charAt(sPos*4) + prand.charAt(sPos*5));   
      var incr = Math.ceil(pwd.length / 2);   
      var modu = Math.pow(2, 31) - 1;   
      if(mult < 2) {   
        alert("Algorithm cannot find a suitable hash. Please choose a different password. /nPossible considerations are to choose a more complex or longer password.");   
        return null;   
      }   
      var salt = Math.round(Math.random() * 1000000000) % 100000000;   
      prand += salt;   
      while(prand.length > 10) {   
        prand = (parseInt(prand.substring(0, 10)) + parseInt(prand.substring(10, prand.length))).toString();   
      }   
      prand = (mult * prand + incr) % modu;   
    var enc_chr = "";   
    var enc_str = "";   
    for(var I=0; I<str.length; I++) {   
        enc_chr = parseInt(str.charCodeAt(I) ^ Math.floor((prand / modu) * 255));   
        if(enc_chr < 16) {   
            enc_str += "0" + enc_chr.toString(16);   
        }else   
            enc_str += enc_chr.toString(16);   
        prand = (mult * prand + incr) % modu;   
    }   
      salt = salt.toString(16);   
      while(salt.length < 8)salt = "0" + salt;   
    enc_str += salt;   
    return enc_str;   
}   
function Decrypt(str, pwd) {   
    if(str=="")return "";   
    if(!pwd || pwd==""){ var pwd="1234"; }   
    pwd = escape(pwd);   
      if(str == null || str.length < 8) {   
        alert("A salt value could not be extracted from the encrypted message because it's length is too short. The message cannot be decrypted.");   
        return;   
      }   
      if(pwd == null || pwd.length <= 0) {   
        alert("Please enter a password with which to decrypt the message.");   
        return;   
      }   
      var prand = "";   
      for(var I=0; I<pwd.length; I++) {   
        prand += pwd.charCodeAt(I).toString();   
      }   
      var sPos = Math.floor(prand.length / 5);   
      var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos*2) + prand.charAt(sPos*3) + prand.charAt(sPos*4) + prand.charAt(sPos*5));   
      var incr = Math.round(pwd.length / 2);   
      var modu = Math.pow(2, 31) - 1;   
      var salt = parseInt(str.substring(str.length - 8, str.length), 16);   
      str = str.substring(0, str.length - 8);   
      prand += salt;   
      while(prand.length > 10) {   
        prand = (parseInt(prand.substring(0, 10)) + parseInt(prand.substring(10, prand.length))).toString();   
      }   
      prand = (mult * prand + incr) % modu;   
      var enc_chr = "";   
      var enc_str = "";   
    for(var I=0; I<str.length; I+=2) {   
        enc_chr = parseInt(parseInt(str.substring(I, I+2), 16) ^ Math.floor((prand / modu) * 255));   
        enc_str += String.fromCharCode(enc_chr);   
        prand = (mult * prand + incr) % modu;   
    }   
    return unescape(enc_str);   
}   
//  End -->   
</script>  

以后碰到加密解密问题,直接将上述代码写成一个js文件,就搞定。省事了。。。。

相关文章

  • 用JS做的简单的可折叠的两级树形菜单

    用JS做的简单的可折叠的两级树形菜单

    可折叠的树形菜单想必大家并不陌生吧,实现方法有多种,在本文将为大家介绍下js是如何实现的,希望对大家有所帮助
    2013-09-09
  • 使用element-ui的upload组件上传代码包时遇到的问题小结

    使用element-ui的upload组件上传代码包时遇到的问题小结

    这篇文章主要介绍了使用element-ui的upload组件上传代码包时遇到的问题及总结,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • JS 获取鼠标左右键的键值方法

    JS 获取鼠标左右键的键值方法

    这篇文章主要介绍了JS 获取鼠标左右键的键值方法,很简单,但很实用,特别是在做与用户交互相关的东西
    2014-10-10
  • 基于JavaScript实现省市联动效果

    基于JavaScript实现省市联动效果

    这篇文章主要为大家详细介绍了JavaScript实现省市联动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • JS合并两个数组的3种方法详解

    JS合并两个数组的3种方法详解

    这篇文章主要介绍了JS合并两个数组的3种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • JavaScript如何动态监听DOM元素高度详解

    JavaScript如何动态监听DOM元素高度详解

    这篇文章主要为大家详细介绍了JavaScript如何动态监听DOM元素高度,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-07-07
  • 基于bootstrap实现多个下拉框同时搜索功能

    基于bootstrap实现多个下拉框同时搜索功能

    这篇文章主要为大家详细介绍了基于bootstrap实现多个下拉框同时搜索功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • jfinal与bootstrap的登录跳转实战演习

    jfinal与bootstrap的登录跳转实战演习

    这篇文章给大家分享jfinal与bootstrap之间的登录跳转,具体内容包含有点击登录弹出模态框、点击登录确认按钮后的validate、jfinal的validate、jfinal的session管理、ajax请求与返回信息处理、页面间智能跳转。感兴趣的朋友跟着小编一起看看吧
    2015-09-09
  • 微信小程序实现环形进度条

    微信小程序实现环形进度条

    这篇文章主要为大家详细介绍了微信小程序实现环形进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • js中对函数设置默认参数值的3种方法

    js中对函数设置默认参数值的3种方法

    这篇文章主要介绍了js中对函数设置默认参数值的3种方法吗,3种方法都具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-10-10

最新评论