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 相关文章推荐
Riot.js 快速的JavaScript单元测试框架
Nov 09 Javascript
关于div自适应高度/左右高度自适应一致的js代码
Mar 22 Javascript
jQuery对html元素的取值与赋值实例详解
Dec 18 Javascript
AngularJS中的表单简单入门
Jul 28 Javascript
jQuery 判断是否包含在数组中Array[]的方法
Aug 03 Javascript
jQuery插件MovingBoxes实现左右滑动中间放大图片效果
Feb 28 Javascript
Angularjs 实现动态添加控件功能
May 25 Javascript
vue通过watch对input做字数限定的方法
Jul 13 Javascript
详解Node.js利用node-git-server快速搭建git服务器
Sep 27 Javascript
快速对接payjq的个人微信支付接口过程解析
Aug 15 Javascript
Vue监听滚动实现锚点定位(双向)示例
Nov 13 Javascript
js实现筛选功能
Nov 24 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
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
php 强制下载文件实现代码
2013/10/28 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
js对象数组按属性快速排序
2011/01/31 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
自动最大化窗口的Javascript代码
2013/05/22 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
2014/10/23 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
2018/01/10 Javascript
Vue.js结合bootstrap前端实现分页和排序效果
2018/12/29 Javascript
学习node.js 断言的使用详解
2019/03/18 Javascript
Jquery异步上传文件代码实例
2019/11/13 jQuery
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020/01/03 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
jQuery实现本地存储
2020/12/22 jQuery
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
python采集微信公众号文章
2018/12/20 Python
python同步两个文件夹下的内容
2019/08/29 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
用python对oracle进行简单性能测试
2020/12/05 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
澳大利亚家具商店:Freedom
2020/12/17 全球购物
爱护公共设施倡议书
2014/08/29 职场文书
导游词之西湖雷峰塔
2019/09/18 职场文书
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS
Python多线程实用方法以及共享变量资源竞争问题
2022/04/12 Python