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 相关文章推荐
父窗口获取弹出子窗口文本框的值
Jun 27 Javascript
JavaScript数字和字符串转换示例
Mar 26 Javascript
对js关键字命名的疑问介绍
Apr 25 Javascript
直接在JS里创建JSON数据然后遍历使用
Jul 25 Javascript
使用node.js中的Buffer类处理二进制数据的方法
Nov 26 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
Jul 07 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
Sep 21 Javascript
微信小程序之事件交互操作实例分析
Dec 03 Javascript
JS温故而知新之变量提升和时间死区
Jan 27 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
May 06 Javascript
Vue中通过vue-router实现命名视图的问题
Apr 23 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
Jun 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
php zend 相对路径问题
2009/01/12 PHP
Symfony2在Nginx下的配置方法图文教程
2016/02/04 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
js href的用法
2010/05/13 Javascript
js实现的map方法示例代码
2014/01/13 Javascript
15款jQuery分布引导插件分享
2015/02/04 Javascript
seajs学习之模块的依赖加载及模块API的导出
2016/10/20 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
详解angularjs中如何实现控制器和指令之间交互
2017/05/31 Javascript
在小程序中使用腾讯视频插件播放教程视频的方法
2018/07/10 Javascript
微信小程序自定义select下拉选项框组件的实现代码
2018/08/28 Javascript
NodeJS搭建HTTP服务器的实现步骤
2018/10/12 NodeJs
layer弹出子iframe层父子页面传值的实现方法
2018/11/22 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
[01:21]辉夜杯战队访谈宣传片—CDEC
2015/12/25 DOTA
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
python strip()函数 介绍
2013/05/24 Python
python使用Berkeley DB数据库实例
2014/09/26 Python
Python中的元类编程入门指引
2015/04/15 Python
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
无惧面试,带你搞懂python 装饰器
2020/08/17 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
AmazeUI框架搭建的方法步骤(图文)
2020/08/17 HTML / CSS
德国网上药房:Apotal
2017/04/04 全球购物
剪彩仪式主持词
2014/03/19 职场文书
学生检讨书如何写
2014/10/30 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
SQL Server表分区删除详情
2021/10/16 SQL Server