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 相关文章推荐
jquery ajax执行后台方法
Mar 18 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
May 06 Javascript
jQuery判断指定id的对象是否存在的方法
May 22 Javascript
jquery实现右侧栏菜单选择操作
Mar 04 Javascript
常用原生JS兼容性写法汇总
Apr 27 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
Apr 29 Javascript
JQuery validate插件Remote用法大全
May 15 Javascript
JS非空验证及邮箱验证的实例
Aug 11 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
Jun 13 Javascript
vue实现自定义多选与单选的答题功能
Jul 05 Javascript
Node.js 路由的实现方法
Jun 05 Javascript
鸿蒙系统中的 JS 开发框架
Sep 18 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编码规范的深入探讨
2013/06/06 PHP
php使用ICQ网关发送手机短信
2013/10/30 PHP
javascript中apply和call方法的作用及区别说明
2014/02/14 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
AngularJS入门教程之过滤器详解
2016/08/19 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
详解angularjs popup-table 弹出框表格指令
2017/09/20 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
详解vue项目打包步骤
2019/03/29 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
python找出完数的方法
2018/11/12 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
Python基于requests库爬取网站信息
2020/03/02 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
自荐信写法介绍
2014/01/25 职场文书
大学活动邀请函
2014/01/28 职场文书
经济贸易系毕业生求职信
2014/05/31 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
公司人力资源管理制度
2015/08/05 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
oracle表分区的概念及操作
2021/04/24 Oracle
详解Redis复制原理
2021/06/04 Redis
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫