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动画效果-fadeIn fadeOut淡入浅出示例代码
Aug 28 Javascript
instanceof和typeof运算符的区别详解
Jan 06 Javascript
node.js中的fs.realpathSync方法使用说明
Dec 16 Javascript
js简单实现点击左右运动的方法
Apr 10 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
Jan 25 Javascript
easyui combogrid实现本地模糊搜索过滤多列
May 13 Javascript
创建简单的node服务器实例(分享)
Jun 23 Javascript
jQuery创建及操作xml格式数据示例
May 26 jQuery
记React connect的几种写法(小结)
Sep 18 Javascript
使用JavaScript保存文本文件到本地的两种方法
Jan 22 Javascript
浅谈关于vue中scss公用的解决方案
Dec 02 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
Feb 14 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
解析php5配置使用pdo
2013/07/03 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
2015/07/03 PHP
PHP基本语法实例总结
2016/09/09 PHP
javascript 类方法定义还是有点区别
2009/04/15 Javascript
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
2016/08/05 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
Vue数据双向绑定底层实现原理
2019/11/22 Javascript
[01:20]PWL开团时刻DAY9——听说潮汐没用?
2020/11/10 DOTA
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
在Django中同时使用多个配置文件的方法
2015/07/22 Python
Python使用ntplib库同步校准当地时间的方法
2016/07/02 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
python3 深浅copy对比详解
2019/08/12 Python
Flask框架学习笔记之使用Flask实现表单开发详解
2019/08/12 Python
Python如何基于rsa模块实现非对称加密与解密
2020/01/03 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
详解pycharm2020.1.1专业版安装指南(推荐)
2020/08/07 Python
HTML5画渐变背景图片并自动下载实现步骤
2013/11/18 HTML / CSS
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
关于廉洁的广播稿
2014/01/30 职场文书
计算机学生的自我评价分享
2014/02/18 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
幼儿园小班家长寄语
2014/04/02 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
MySQL触发器的使用
2021/05/24 MySQL
浅谈PHP7中的一些小技巧
2021/05/29 PHP
php双向队列实例讲解
2021/11/17 PHP