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阻止事件冒泡
Mar 20 Javascript
js模仿jquery的写法示例代码
Jun 16 Javascript
为指定的元素添加遮罩层的示例代码
Jan 15 Javascript
jquery实现经典的淡入淡出选项卡效果代码
Sep 22 Javascript
深入理解angularjs过滤器
May 25 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
Aug 15 Javascript
js对字符串进行编码的方法总结(推荐)
Nov 10 Javascript
js canvas实现放大镜查看图片功能
Jun 08 Javascript
基于javaScript的this指向总结
Jul 22 Javascript
深入浅析ES6 Class 中的 super 关键字
Oct 20 Javascript
angular2实现统一的http请求头方法
Aug 13 Javascript
小程序实现多个选项卡切换
Jun 19 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下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
2015/05/13 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
文本加密解密
2006/06/23 Javascript
Z-Blog中用到的js代码
2007/03/15 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
JS数字抽奖游戏实现方法
2015/05/04 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
2017/05/18 Javascript
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
vue通过video.js解决m3u8视频播放格式的方法
2019/07/30 Javascript
微信公众号平台接口开发 菜单管理的实现
2019/08/14 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
[58:00]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第二场 2月7日
2021/03/11 DOTA
Fiddler如何抓取手机APP数据包
2016/01/22 Python
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
pytorch梯度剪裁方式
2020/02/04 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
环境科学专业大学生自荐信格式
2013/09/21 职场文书
高校学生干部的自我评价分享
2013/11/04 职场文书
联谊活动策划书
2014/01/26 职场文书
交通安全寄语大全
2014/04/08 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
人才市场接收函
2015/01/30 职场文书