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 相关文章推荐
使用js画图之饼图
Jan 12 Javascript
基于Jquery代码实现手风琴菜单
Nov 19 Javascript
浅谈Sticky组件的改进实现
Mar 22 Javascript
微信小程序 实战程序简易新闻的制作
Jan 09 Javascript
JavaScript中的return布尔值的用法和原理解析
Aug 14 Javascript
使用jQuery实现简单的tab框实例
Aug 22 jQuery
angularjs结合html5实现拖拽功能
Jun 25 Javascript
vue中关闭eslint的方法分析
Aug 04 Javascript
40行代码把Vue3的响应式集成进React做状态管理
May 20 Javascript
vue页面跳转实现页面缓存操作
Jul 22 Javascript
vue中echarts引入中国地图的案例
Jul 28 Javascript
VUE 实现element upload上传图片到阿里云
Aug 12 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/11/27 PHP
php去除数组中重复数据
2014/11/18 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
2016/05/06 PHP
PHP中的表达式简述
2016/05/29 PHP
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
轻松创建nodejs服务器(9):实现非阻塞操作
2014/12/18 NodeJs
JQuery入门基础小实例(1)
2015/09/17 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
2019/10/30 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
python批量同步web服务器代码核心程序
2014/09/01 Python
整理Python 常用string函数(收藏)
2016/05/30 Python
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
python实现简易动态时钟
2018/11/19 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
python中dict()的高级用法实现
2019/11/13 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
儿科护理实习自我鉴定
2013/09/19 职场文书
个性大学生自我评价
2013/12/04 职场文书
兵马俑的导游词
2015/02/02 职场文书
2015年电工工作总结
2015/04/10 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书