时间:2021-05-26
首先介绍一下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通过位运算实现权限加解密,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Java实现与JS相同的Des加解密算法。分享给大家供大家参考,具体如下:这里演示java与js实现相同的des加解密算法,不多说,不废话,直接上
本文实例讲述了C#RSA分段加解密实现方法。分享给大家供大家参考,具体如下:RSA加解密:1024位的证书,加密时最大支持117个字节,解密时为128;2048
ECDSA签名算法packagecom.albedo.security;/***DSA加解密实现*/publicclassECDSAUtilsextendsBa
最近项目需要选择一套对称加密算法,来满足前后端之间的加解密操作。初步打算前端使用crypto-js来实现,后端使用java本身的加密算法实现,但遇到了一个问题:
在日常系统管理工作中,需要作一些加解密的工作,通过openssl工具包就能完成我们很多需求!1.opensslRSA加解密RSA是基于数论中大素数的乘积难分解理