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 相关文章推荐
网页设计常用的一些技巧
Dec 22 Javascript
直接生成打开窗口代码,不必下载
May 14 Javascript
关于javascript function对象那些迷惑分析
Oct 24 Javascript
JavaScript打印iframe内容示例代码
Aug 20 Javascript
js实现鼠标悬浮给图片加边框的方法
Jan 30 Javascript
深入理解JavaScript中的箭头函数
Jul 28 Javascript
详细总结Javascript中的焦点管理
Sep 17 Javascript
js实现简单的手风琴效果
Feb 27 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
Aug 24 jQuery
解决Vue开发中对话框被遮罩层挡住的问题
Nov 26 Javascript
浅谈Vue.js组件(二)
Apr 09 Javascript
JavaScript indexOf()原理及使用方法详解
Jul 09 Javascript
基于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编码规范之注释和文件结构说明
2010/07/09 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
php分页示例分享
2014/04/30 PHP
PHP中的替代语法介绍
2015/01/09 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
php实现的Curl封装类Curl.class.php用法实例分析
2015/09/25 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
2020/09/17 PHP
js不是基础的基础
2006/12/24 Javascript
jquery 日期控件datepicker属性详细解析
2013/11/08 Javascript
JS获取url链接字符串 location.href
2013/12/23 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
2019/05/21 Javascript
在vue中使用防抖函数组件操作
2020/07/26 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
python脚本替换指定行实现步骤
2017/07/11 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
python pyinstaller打包exe报错的解决方法
2019/11/02 Python
python 字典套字典或列表的示例
2019/12/16 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
python打包多类型文件的操作方法
2020/09/21 Python
Python是如何进行类型转换的
2013/06/09 面试题
个人委托书
2014/07/31 职场文书
政风行风评议工作总结
2014/10/21 职场文书
文言文辞职信
2015/02/28 职场文书