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 图片截取工具jquery.imagecropper.js
Apr 09 Javascript
jquery简单的拖动效果实现原理及示例
Jul 26 Javascript
JSF中confirm弹出框的用法示例介绍
Jan 07 Javascript
原生javascript实现无间缝滚动示例
Jan 28 Javascript
JS取得绝对路径的实现代码
Jan 16 Javascript
基于javascript实现动态时钟效果
Aug 18 Javascript
JQuery点击事件回到页面顶部效果的实现代码
May 24 Javascript
jquery插件锦集【推荐】
Dec 16 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
Sep 21 Javascript
vue动态配置模板 'component is'代码
Jul 04 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
Dec 30 jQuery
jQuery实现放大镜案例
Oct 19 jQuery
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 中使用随机数的三个步骤
2006/10/09 PHP
php printf输出格式使用说明
2010/12/05 PHP
跟我学Laravel之配置Laravel
2014/10/15 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
JS实现定时自动关闭DIV层提示框的方法
2015/05/11 Javascript
纯js和css完成贪吃蛇小游戏demo
2016/09/01 Javascript
jquery属性,遍历,HTML操作方法详解
2016/09/17 Javascript
jquery判断类型是不是number类型的实例代码
2016/10/07 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
Angular5中状态管理的实现
2018/09/03 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
PyQt 线程类 QThread使用详解
2017/07/16 Python
TensorFlow高效读取数据的方法示例
2018/02/06 Python
Atom的python插件和常用插件说明
2018/07/08 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
Python collections模块使用方法详解
2019/08/28 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
英国最大的汽车配件在线商店:Euro Car Parts
2019/09/30 全球购物
介绍Ibatis的核心类
2013/11/18 面试题
实用求职信范文分享
2013/12/25 职场文书
汽车销售顾问求职自荐信
2014/01/01 职场文书
给同学的道歉信
2014/01/16 职场文书
长安大学毕业生自我鉴定
2014/01/17 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
酒店员工手册范本
2015/05/14 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL