js将URL网址转为16进制加密与解密函数


Posted in Javascript onMarch 04, 2020

十六进制(Hexadecimal)是计算机中数据的一种表示方法。同日常生活中的表示法不一样,它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。不同电脑系统、编程语言对于16进制数值有不同的表示方式:如增加0x前缀。

这里推荐一个在线转换的小工具方便大家使用:http://tools.3water.com/transcoding/decode_encode_tool

php函数:

bin2hex(str)将字符串转换成16进制
bin2hex(hex)将16进制转换成字符串

下面的函数都是单个转换

字符串转16进制

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("");
}

16进制转字符串

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("");
}

三水点靠木修改的一个支持将网址转换为\x编码的

function strToHex3water(str) {
if(str === "")


return "";

var hexCharCode = [];

for(var i = 0; i < str.length; i++) {
		hexCharCode.push("\\x"); 

	
hexCharCode.push((str.charCodeAt(i)).toString(16));

}

return hexCharCode.join("");
}

例如

document.write(strToHex3water(”https://3water.com“));

输出

\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x6a\x62\x35\x31\x2e\x6e\x65\x74

想看看对不是,直接用js的alert或document.write("")

即可看到加密的字符串,方便隐藏网址与字符等。

测试的时候也可以在chrome中定义例如

str="\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x6a\x62\x35\x31\x2e\x6e\x65\x74";

js将URL网址转为16进制加密与解密函数

下面是补充

Js字符串与十六进制的相互转换

开发过程中,字符串与十六进、二进制之间的相互转换常常会用到,尤其是涉及到中文的加密时,就需要把中文转换为十六进制。下面说说具体的转换方法。

1、字符串转换为十六进制

主要使用 charCodeAt()方法,此方法返回一个字符的 Unicode 值,该字符位于指定索引位置。

function stringToHex(str){

 var val="";


 for(var i = 0; i < str.length; i++){



 if(val == "")




 val = str.charCodeAt(i).toString(16);



 else




 val += "," + str.charCodeAt(i).toString(16);


 }


 return val;

 }

调用方法:

var str = "abcde";
stringToHex(str);

2、十六进制转换为字符串

主要使用 fromCharCode()方法,此方法将 Unicode 码转换为与之对应的字符

function hexToString(str){

 var val="";


 var arr = str.split(",");


 for(arr i = 0; i < arr.length; i++){



 val += arr[i].fromCharCode(i);


 }


 return val;

 }

调用方法:

var str = "676865";

stringToHex(str);

3、用 parseInt() 方法转换

parseInt(string, radix) 方法只能转换 String 类型,对其它类型都返回 NaN(非数字)。string 表示待转换的字符,radix 表示要转为的进制,值介于 2 ~ 36 之间。

parseInt("bc",16); //表示把字符串bc转换为16进制,结果:188

parseInt("10",8); //表示把字符串10转换为8进制,结果:8

parseInt("10",2); //表示把字符串10转换为2进制,结果:2

Javascript \x 反斜杠x 16进制 编解码

js 里 \x 开头的通常是16进制编码的数据,下面代码实现编解码:

解码

function decode(str){
return str.replace(/\\x(\w{2})/g,function(_,$1){ return String.fromCharCode(parseInt($1,16)) });
}

eg.
decode('\x5f\x63\x68\x61\x6e\x67\x65\x49\x74\x65\x6d\x43\x72\x6f\x73\x73\x4c\x61\x79\x65\x72')

"_changeItemCrossLayer"

编码

function encode(str){
return str.replace(/(\w)/g,function(_,$1){ return "\\x"+ $1.charCodeAt(0).toString(16) });
}

eg.

encode("_changeItemCrossLayer")

"\x5f\x63\x68\x61\x6e\x67\x65\x49\x74\x65\x6d\x43\x72\x6f\x73\x73\x4c\x61\x79\x65\x72"

以上就是js将URL网址转为16进制加密与解密函数的详细内容,更多关于js将字符转换为16进制的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
一个刚完成的layout(拖动流畅,不受iframe影响)
Aug 17 Javascript
jQuery实现表格行上下移动和置顶效果
Jun 05 Javascript
Bootstrap按钮下拉菜单组件详解
May 10 Javascript
Javascript中的迭代、归并方法详解
Jun 14 Javascript
AngularJS $injector 依赖注入详解
Sep 14 Javascript
使用vue实现点击按钮滑出面板的实现代码
Jan 10 Javascript
canvas 实现中国象棋
Feb 17 Javascript
JS简单添加元素新节点的方法示例
Feb 10 Javascript
自定义vue组件发布到npm的方法
May 09 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
Jun 25 Javascript
vue实现设置载入动画和初始化页面动画效果
Oct 28 Javascript
jQuery实现二级导航菜单的示例
Sep 30 jQuery
基于node+websocket+html实现腾讯课堂聊天室聊天功能
Mar 04 #Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
Mar 04 #Javascript
微信小程序如何加载数据库真实数据的实现
Mar 04 #Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
Mar 04 #Javascript
微信小程序云函数添加数据到数据库的方法
Mar 04 #Javascript
jquery实现垂直手风琴菜单
Mar 04 #jQuery
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
Mar 04 #Javascript
You might like
PHP学习笔记之数组篇
2011/06/28 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
php制作简单模版引擎
2016/04/07 PHP
php修改数组键名的方法示例
2017/04/15 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
Add a Formatted Table to a Word Document
2007/06/15 Javascript
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
javascript new后的constructor属性
2010/08/05 Javascript
jquery实现居中弹出层代码
2010/08/25 Javascript
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
2018/01/18 Javascript
jQuery实现简易聊天框
2020/02/08 jQuery
微信小程序实现聊天室
2020/08/21 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
Python中使用SAX解析xml实例
2014/11/21 Python
Django实现快速分页的方法实例
2017/10/22 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
聊聊python中的异常嵌套
2020/09/01 Python
Java的基础面试题附答案
2016/01/10 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
2016/08/18 面试题
支部书记四风对照材料
2014/08/28 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
2015年档案管理工作总结
2015/04/08 职场文书
Python如何把不同类型数据的json序列化
2021/04/30 Python