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实例教程(19) 使用HoTMetal(5)
Dec 23 Javascript
javascript插入样式实现代码
Feb 22 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
Oct 22 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
Apr 26 Javascript
js 判断一组日期是否是连续的简单实例
Jul 11 Javascript
微信支付 JS API支付接口详解
Jul 11 Javascript
Vuex模块化实现待办事项的状态管理
Mar 15 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
Jun 28 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
Aug 03 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
Sep 14 Javascript
JS+JQuery实现无缝连接轮播图
Dec 30 jQuery
让JavaScript代码更加精简的方法技巧
Jun 01 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
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
jquery tools之tooltip
2009/07/25 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
2017/12/27 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
vue实现将一个数组内的相同数据进行合并
2019/11/07 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
使用虚拟环境打包python为exe 文件的方法
2019/08/29 Python
python 动态调用函数实例解析
2019/10/21 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
计算机专业自荐信
2013/10/14 职场文书
大学运动会通讯稿
2014/01/28 职场文书
汽车队司机先进事迹材料
2014/02/01 职场文书
军训口号
2014/06/13 职场文书
八月一日观后感
2015/06/10 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL
windows安装python超详细图文教程
2021/05/21 Python