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 最佳实践
Oct 30 Javascript
IE事件对象(The Internet Explorer Event Object)
Jun 27 Javascript
JavaScript面向对象之Prototypes和继承
Jul 12 Javascript
javascript自动改变文字大小和颜色的效果的小例子
Aug 02 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
Jun 05 Javascript
JavaScript基于ajax编辑信息用法实例
Jul 15 Javascript
AngularJS  ng-repeat遍历输出的用法
Jun 19 Javascript
Bootstrap Multiselect 常用组件实现代码
Jul 09 Javascript
koa大型web项目中使用路由装饰器的方法示例
Apr 02 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
Aug 03 Javascript
通过滑动翻页效果实现和移动端click事件问题
Jan 26 Javascript
vue常用高阶函数及综合实例
Feb 25 Vue.js
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 不错的学习资料
2009/02/06 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
php变量范围介绍
2012/10/15 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
Ext面向对象开发实践(续)
2008/11/18 Javascript
jquery隐藏标签和显示标签的实例
2013/11/11 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
javascript中href和replace的比较(详解)
2016/11/25 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
2017/03/08 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
2017/10/15 Javascript
JS调用安卓手机摄像头扫描二维码
2018/10/16 Javascript
vue中keep-alive组件的入门使用教程
2019/06/06 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
python中assert用法实例分析
2015/04/30 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
详解Python在七牛云平台的应用(一)
2017/12/05 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
Python Django框架实现应用添加logging日志操作示例
2019/05/17 Python
Python中turtle库的使用实例
2019/09/09 Python
如何利用Python matplotlib绘制雷达图
2020/12/21 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
家长对孩子的感言
2014/03/10 职场文书
2015中秋节晚会开场白
2015/07/30 职场文书
小学中队长竞选稿
2015/11/20 职场文书
详解Redis在SpringBoot工程中的综合应用
2021/10/16 Redis
php解析非标准json、非规范json的方式实例
2022/05/10 PHP
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript
Python编写车票订购系统 Python实现快递收费系统
2022/08/14 Python