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 相关文章推荐
IE和Firefox下event事件杂谈
Dec 18 Javascript
JS 如果改变span标签的是否隐藏属性
Oct 06 Javascript
如何在一个页面显示多个百度地图
Apr 07 Javascript
jQuery获取浏览器中的分辨率实现代码
Apr 23 Javascript
JS数组的赋值介绍
Mar 10 Javascript
浅谈javascript中遇到的字符串对象处理
Nov 18 Javascript
基于MVC方式实现三级联动(JavaScript)
Jan 23 Javascript
javascript 面向对象function详解及实例代码
Feb 28 Javascript
Vue中的vue-resource示例详解
Nov 02 Javascript
微信小程序实现随机验证码功能
Dec 20 Javascript
微信小程序实现消息框弹出动画
Apr 18 Javascript
原生JS运动实现轮播图
Jan 02 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+DBM的同学录程序(3)
2006/10/09 PHP
php上传图片生成缩略图(GD库)
2016/01/06 PHP
php获取linux命令结果的实例
2017/03/13 PHP
php压缩文件夹最新版
2018/07/18 PHP
PHP实现简单登录界面
2019/10/23 PHP
jQuery 隔行换色 支持键盘上下键,按Enter选定值
2009/08/02 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
js制作网站首页图片轮播特效代码
2016/08/30 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
2017/09/11 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
2018/06/19 Javascript
vue实现word,pdf文件的导出功能
2018/07/31 Javascript
Vue加载组件、动态加载组件的几种方式
2018/08/31 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
python基础教程之匿名函数lambda
2017/01/17 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
Random 在 Python 中的使用方法
2018/08/09 Python
Python模块_PyLibTiff读取tif文件的实例
2020/01/13 Python
Tensorflow不支持AVX2指令集的解决方法
2020/02/03 Python
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
介绍一下javax.servlet.Servlet接口及其主要方法
2015/11/30 面试题
教导处工作制度
2014/01/18 职场文书
高中物理教学反思
2014/02/08 职场文书
网吧最新创业计划书范文
2014/03/27 职场文书
文明市民先进事迹
2014/05/15 职场文书
模特大赛策划方案
2014/05/28 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
导游词之山东红叶谷
2019/10/31 职场文书