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 相关文章推荐
JqGrid web打印实现代码
May 31 Javascript
详谈JavaScript 匿名函数及闭包
Nov 14 Javascript
jQuery根据表单name获取值的方法
May 24 Javascript
JavaScript实现星星等级评价功能
Mar 22 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 jQuery
JS写谷歌浏览器chrome的外挂实例
Jan 11 Javascript
layer弹出层全屏及关闭方法
Aug 17 Javascript
微信小程序实现提交input信息到后台的方法示例
Jan 19 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
May 29 Javascript
详解为什么Vue中不要用index作为key(diff算法)
Apr 04 Javascript
javascript实现前端分页功能
Nov 26 Javascript
详解TypeScript中的类型保护
Apr 29 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中多维数组按指定value排序的实现代码
2014/08/19 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
Vue仿支付宝支付功能
2018/05/25 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
Jquery 获取相同NAME 或者id删除行操作
2020/08/24 jQuery
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
简单的编程0基础下Python入门指引
2015/04/01 Python
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
关于ZeroMQ 三种模式python3实现方式
2019/12/23 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
详解css3中 text-fill-color属性
2019/07/08 HTML / CSS
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
html5自定义video标签的海报与播放按钮功能
2019/12/04 HTML / CSS
运动会开幕式邀请函
2014/02/03 职场文书
财务务虚会发言材料
2014/10/20 职场文书
乐山大佛导游词
2015/02/02 职场文书
收入证明申请书
2015/06/12 职场文书
2016秋季校长开学典礼致辞
2015/11/26 职场文书
redis实现共同好友的思路详解
2021/05/26 Redis
MySQL数据库如何给表设置约束详解
2022/03/13 MySQL
python实现手机推送 代码也就10行左右
2022/04/12 Python