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


Posted in Javascript onNovember 17, 2014

今天在做一个老项目时,遇到一个需求,在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文件,就搞定。省事了。。。。

Javascript 相关文章推荐
解密效果
Jun 23 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
Dec 04 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
Jan 07 Javascript
javascript中call apply 的应用场景
Apr 16 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
Jun 14 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
Jul 28 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
Nov 09 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
May 17 jQuery
node文件上传功能简易实现代码
Jun 16 Javascript
js使用html2canvas实现屏幕截取的示例代码
Aug 28 Javascript
使用vue-router完成简单导航功能【推荐】
Jun 28 Javascript
微信小程序学习总结(五)常见问题实例小结
Jun 04 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
Nov 17 #Javascript
PHP PDO操作总结
Nov 17 #Javascript
JavaScript函数详解
Nov 17 #Javascript
提升PHP安全:8个必须修改的PHP默认配置
Nov 17 #Javascript
详解Javascript 装载和执行
Nov 17 #Javascript
jQuery带箭头提示框tooltips插件集锦
Nov 17 #Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
Nov 17 #Javascript
You might like
php生成数组的使用示例 php全组合算法
2014/01/16 PHP
PHP lcfirst()函数定义与用法
2019/03/08 PHP
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
div模拟滚动条效果示例代码
2013/10/16 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
基于vue.js实现图片轮播效果
2016/12/01 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
2017/01/11 Javascript
详解vue 单页应用(spa)前端路由实现原理
2018/04/04 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
详解Django 时间与时区设置问题
2019/07/23 Python
Django实现文件上传下载功能
2019/10/06 Python
Python3实现zip分卷压缩过程解析
2019/10/09 Python
用python进行视频剪辑
2020/11/02 Python
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
linux面试题参考答案(11)
2016/11/26 面试题
澳大利亚商务邀请函
2014/01/17 职场文书
运动会解说词50字
2014/01/18 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
作文评语大全
2014/04/23 职场文书
银行爱岗敬业演讲稿
2014/05/05 职场文书
小区文明倡议书
2014/05/16 职场文书
师德模范事迹材料
2014/06/03 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
财务部会计岗位职责
2015/02/03 职场文书
教师年度考核个人总结
2015/02/12 职场文书
公务员政审个人总结
2015/02/12 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
高考诚信考试承诺书
2015/04/29 职场文书
运动会报道稿大全
2015/07/23 职场文书
python实现简单的井字棋
2021/05/26 Python