javascript实现的字符串与十六进制表示字符串相互转换方法


Posted in Javascript onJuly 17, 2015

本文实例讲述了javascript实现的字符串与十六进制表示字符串相互转换方法。分享给大家供大家参考。具体如下:

之所以写这个,是因为发现SQL注入和XSS中经常利用十六进制表示的字符串,比如
SELECT CONCAT(0x68656c6c6f);
得到的是hello

<!DOCTYPE html>
<html>
 <head>
  <title>Hex-Char Bi-Converter</title>
 </head>
 <body>
  <div class="mainContainer">
   <label for="from" id="fromLabel">String</label>
   <input type="text" name="from" id="from" />
   <input type="button" name="exchange" id="exchange" value="<=>" />
   <label for="to" id="toLabel">Hex</label>
   <input type="text" name="to" id="to" />
   <input type="button" name="convert" id="convert" value="Convert" />
  </div>
  <script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
  <script type="text/javascript">
   var curMode = 0; // curMode: 0 represents String to Hex, 1 from Hex to String
   var fromToLabelArray = ["Hex", "String"];
   $(function() {
    $("#convert").click(function() {
     var fromVal = $("#from").val();
     var toVal = 
      curMode === 0 
      ? 
      strToHexCharCode(fromVal) 
      :
      hexCharCodeToStr(fromVal);
     $("#to").val(toVal);
    });
    $("#exchange").click(function() {
     $("#fromLabel").text(fromToLabelArray[curMode]);
     $("#toLabel").text(fromToLabelArray[1-curMode]);
     curMode = 1 - curMode;
    });
   });
   function strToHexCharCode(str) {
    if(str === "")
     return "";
    var hexCharCode = [];
    hexCharCode.push("0x");    
    for(var i = 0; i < str.length; i++) {
     hexCharCode.push((str.charCodeAt(i)).toString(16));
    }
    return hexCharCode.join("");
   }
   function hexCharCodeToStr(hexCharCodeStr) {
    var trimedStr = hexCharCodeStr.trim();
    var rawStr = 
      trimedStr.substr(0,2).toLowerCase() === "0x"
      ? 
      trimedStr.substr(2) 
      : 
      trimedStr;
    var len = rawStr.length;
    if(len % 2 !== 0) {
     alert("Illegal Format ASCII Code!");
        return "";
    }
    var curCharCode;
    var resultStr = [];
    for(var i = 0; i < len;i = i + 2) {
     curCharCode = parseInt(rawStr.substr(i, 2), 16); // ASCII Code Value
     resultStr.push(String.fromCharCode(curCharCode));
    }
    return resultStr.join("");
   }
  </script>
 </body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
jQuery 阴影插件代码分享
Jan 09 Javascript
javascript得到当前页的来路即前一页地址的方法
Feb 18 Javascript
JS来动态的修改url实现对url的增删查改
Sep 05 Javascript
JS实现黑客帝国文字下落效果
Sep 01 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
Sep 05 Javascript
js数组与字符串常用方法总结
Jan 13 Javascript
详解基于vue的移动web app页面缓存解决方案
Aug 03 Javascript
关于angularJs清除浏览器缓存的方法
Nov 28 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
Aug 19 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
Mar 07 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
Jul 19 Javascript
JavaScript实现基于十进制的四舍五入实例
Jul 17 #Javascript
JavaScript之AOP编程实例
Jul 17 #Javascript
js+html5实现可在手机上玩的拼图游戏
Jul 17 #Javascript
javascript封装的sqlite操作类实例
Jul 17 #Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
Jul 17 #Javascript
javascript实现根据3原色制作颜色选择器的方法
Jul 17 #Javascript
javascript实现树形菜单的方法
Jul 17 #Javascript
You might like
我的php学习笔记(毕业设计)
2012/02/21 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
jquery键盘事件使用介绍
2011/11/01 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
Json解析的方法小结
2016/06/22 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
2017/03/08 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
在keras里实现自定义上采样层
2020/06/28 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
Linden Leaves官网:新西兰纯净护肤品
2020/12/20 全球购物
高中生家长会演讲稿
2014/01/14 职场文书
2014年教师节寄语
2014/08/11 职场文书
软件测试专业推荐信
2014/09/18 职场文书
个人汇报材料范文
2014/12/30 职场文书
个人工作失误的保证书怎么写?
2019/06/21 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
pandas中DataFrame检测重复值的实现
2021/05/26 Python
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery
nginx配置之并发频次限制
2022/04/18 Servers