JS通过位运算实现权限加解密


Posted in Javascript onAugust 14, 2018

首先介绍一下js中的位运算:

1. "&" :与运算,转化为二进制数,如果相同位数都为1则得结果为1,否则为0;

2. "|" :或运算,转化为二进制数,如果相同位数只要有一个为1则得结果为1,否则为0;

3. "^" :异或运算,转化为二进制数,如果相同位数不同则得结果为1,否则为0;

4."<<" 异位运算符,1<<1,表示将1左移一位,也就是010,在二进制中代表2;

顺便说一下,十进制数字互相转化。

十进制转为别的进制:

var num = 123;
console.log(num.toString(2))
console.log(num.toString(8))//参数传想要转化的位数

别的进制转化为十进制:

var num = 110;
console.log(parseInt(num,2))//二进制转化为十进制

假设我们现在有5项权限,在二进制中用1代表拥有权限,0代表不拥有。所以11111这样代表拥有所有的五项权限,那么我们如何知道用户是否有某一项具体权限呢。

比如,我们现在想检测用户是否有第一项权限,我们首先用过异位 1 << 0,向左移0位,还是1,然后1 & (Math.pow(2,5) -1),

如果返回0,说明个位对不上,也就是说我们当前没有权限,如果返回1,说明我们拥有第一项权限,同理,如果需要检验第二位权限,只需要异位2就好了。

if((1 << 0) & (Math.pow(2,5) - 1) !== 0){
  //拥有第一项权限权限
}
if((1 << 1) & (Math.pow(2,5) - 1) !== 0){
  //拥有第一项权限权限
}

总结

以上所述是小编给大家介绍的JS通过位运算实现权限加解密,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
Oct 11 Javascript
Javascript中的delete介绍
Sep 02 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
Nov 13 Javascript
jquery实现控制表格行高亮实例
Jun 05 Javascript
js点击button按钮跳转到另一个新页面
Oct 10 Javascript
javascript实现简单的鼠标拖动效果实例
Apr 10 Javascript
动态加载js、css的简单实现代码
May 26 Javascript
javascript中获取元素标签中间的内容的实现方法
Oct 08 Javascript
vscode 开发Vue项目的方法步骤
Nov 25 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
Apr 28 Javascript
如何利用javascript接收json信息并进行处理
Aug 06 Javascript
小程序实现列表倒计时功能
Jan 29 Javascript
js中getter和setter用法实例分析
Aug 14 #Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
Aug 14 #Javascript
Vue.js单向绑定和双向绑定实例分析
Aug 14 #Javascript
微信小程序异步API为Promise简化异步编程的操作方法
Aug 14 #Javascript
jQuery实现的简单拖拽功能示例【测试可用】
Aug 14 #jQuery
jQuery+CSS实现的标签页效果示例【测试可用】
Aug 14 #jQuery
layui的table单击行勾选checkbox功能方法
Aug 14 #Javascript
You might like
php定时计划任务的实现方法详解
2013/06/06 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
2015/09/09 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
jQuery模拟select实现下拉菜单功能
2016/06/20 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
JavaScript变速动画函数封装添加任意多个属性
2019/04/03 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python解析xml模块封装代码
2014/02/07 Python
web.py获取上传文件名的正确方法
2014/08/26 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
Tensorflow实现神经网络拟合线性回归
2019/07/19 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
python实现快递价格查询系统
2020/03/03 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
Python通过文本和图片生成词云图
2020/05/21 Python
小学生秋游活动方案
2014/02/23 职场文书
汽车车尾标语大全
2015/08/11 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS
Go语言基础函数基本用法及示例详解
2021/11/17 Golang
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫
mysql中关键词exists的用法实例详解
2022/06/10 MySQL