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 相关文章推荐
指定js可访问其它域名的cookie的方法
Sep 18 Javascript
event.keyCode键码值表 附只能输入特定的字符串代码
May 15 Javascript
js判断是否按下了Shift键的方法
Jan 27 Javascript
JavaScript操作class和style样式代码详解
Feb 13 Javascript
JavaScript中关联原型链属性特性
Feb 13 Javascript
JavaScript 字符串常用操作小结(非常实用)
Nov 30 Javascript
jQuery图片轮播功能实例代码
Jan 29 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
Apr 06 Javascript
Javascript(es2016) import和require用法和区别详解
Aug 11 Javascript
iframe高度自适应及隐藏滚动条的实例详解
Sep 29 Javascript
详解写好JS条件语句的5条守则
Feb 28 Javascript
vue实现单一筛选、删除筛选条件
Oct 26 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
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
基于php编程规范(详解)
2017/08/17 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
类似框架的js代码
2006/11/09 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
Javascript获取图片原始宽度和高度的方法详解
2016/09/20 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
javascript 动态生成css代码的两种方法
2017/03/17 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
js canvas实现星空连线背景特效
2019/11/01 Javascript
vue data有值,但是页面{{}} 取不到值的解决
2020/11/09 Javascript
python抓取网页中图片并保存到本地
2015/12/01 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
python 通过 socket 发送文件的实例代码
2018/08/14 Python
python实现定时发送qq消息
2019/01/18 Python
Python3分析处理声音数据的例子
2019/08/27 Python
python实现大战外星人小游戏实例代码
2019/12/26 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
CSS3简单实现照片墙
2014/12/12 HTML / CSS
韩国休闲女装品牌网站:ANAIS
2016/08/24 全球购物
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
个人找工作的自我评价
2013/10/17 职场文书
销售工作人员的自我评价分享
2013/11/10 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
使用golang编写一个并发工作队列
2021/05/08 Golang
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python