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 定时器调用传递参数的方法
Nov 12 Javascript
WEB 浏览器兼容 推荐收藏
May 14 Javascript
为jQuery添加Webkit的触摸的方法分享
Feb 02 Javascript
判断window.onload是否多次使用的方法
Sep 21 Javascript
Javascript解析URL方法详解
Dec 05 Javascript
JavaScript中的数组特性介绍
Dec 30 Javascript
详细分析Javascript中创建对象的四种方式
Aug 17 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
Dec 30 Javascript
angularjs封装$http为factory的方法
May 18 Javascript
vue.js如何将echarts封装为组件一键使用详解
Oct 10 Javascript
在vue中实现简单页面逆传值的方法
Nov 27 Javascript
详解react-refetch的使用小例子
Feb 15 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
基于mysql的论坛(1)
2006/10/09 PHP
也谈php网站在线人数统计
2008/04/09 PHP
php Http_Template_IT类库进行模板替换
2009/03/19 PHP
PHP关联数组的10个操作技巧
2013/01/21 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
jQuery中prop()方法用法实例
2015/01/05 Javascript
jQuery实现强制cookie过期方法汇总
2015/05/22 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
js实现带缓动动画的导航栏效果
2017/01/16 Javascript
详解Vue.js入门环境搭建
2017/03/17 Javascript
Vue实现virtual-dom的原理简析
2017/07/10 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
React学习笔记之高阶组件应用
2018/06/02 Javascript
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
浅谈layui 表单元素的选中问题
2019/10/25 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
Python3之文件读写操作的实例讲解
2018/01/23 Python
Python实现时钟显示效果思路详解
2018/04/11 Python
Django CSRF认证的几种解决方案
2020/03/03 Python
python代码如何注释
2020/06/01 Python
CSS3 input框的实现代码类似Google登录的动画效果
2020/08/04 HTML / CSS
主要的Ajax框架都有什么
2013/11/14 面试题
英文自荐信
2013/12/15 职场文书
社区工作者先进事迹
2014/01/18 职场文书
公司活动邀请函
2014/01/24 职场文书
捐赠仪式主持词
2014/03/19 职场文书
市场营销毕业生自荐信范文
2014/04/01 职场文书
献爱心活动总结
2014/05/07 职场文书
群众路线教育实践活动剖析材料
2014/09/30 职场文书
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js
keepalived + nginx 实现高可用方案
2022/12/24 Servers