`
celine_q
  • 浏览: 17079 次
  • 性别: Icon_minigender_2
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

【转】权限控制算法

阅读更多
向大家介绍一种很不错,也是Linux中的权限管理算法。

  定义a^b为:a的b次方
  假如,我们为每一个操作设定一个唯一的整数值,比如:

删除A---0
修改A---1
添加A---2

删除B---3
修改B---4
添加B---5
。。。

  理论上可以有N个操作,这取决于你用于储存用户权限值的数据类型了。

  这样,如果用户有权限:添加A---2;删除B---3;修改B---4
那用户的权限值 purview =2^2+2^3+2^4=28,也就是2的权的和了
化成二进制可以表示为11100
  如果要验证用户是否有删除B的权限,就可以通过位与运算来实现。
  在Java里,位与运算运算符号为&
  即是:int value = purview &((int)Math.pow(2,3));
  你会发现,当用户有操作权限时,运算出来的结果都会等于这个操作需要的权限值!

原理:
位与运算,顾名思义就是对位进行与运算:
以上面的式子为例:purview & 2^3 也就是 28&8
将它们化成二进制有
 11100
& 01000
-------------------
  01000 == 8(十进制) == 2^3
同理,如果要验证是否有删除A---0的权限
可以用:purview &((int)Math.pow(2,0));
即:
 11100
& 00001
------------------------
  00000 == 0(十进制)  != 2^0

  这种算法的一个优点是速度快。可以同时处理N个权限,设置N种角色.
  如果想验证是否同时有删除A---0和删除B---3的权限
  可以用purview&(2^0+2^3)==(2^0+2^3)?true:false;
  设置多角色用户。根据权限值判断用户的角色。。。

  下面提供一个java的单操作权限判断的代码:


//userPurview是用户具有的总权限
//optPurview是一个操作要求的权限为一个整数(没有经过权的!)
public static boolean checkPower(int userPurview, int optPurview){
  int purviewValue = (int)Math.pow(2, optPurview);
  return (userPurview & purviewValue) == purviewValue;
}
  当然,多权限的验证只要扩展一下就可以了。
  几点注意事项:首先,一个系统可能有很多的操作,因此,请建立数据字典,以便查阅,修改时使用。其次,如果用数据库储存用户权限,请注意数值的有效范围。操作权限值请用唯一的整数!Java的int类型最多可以储存11个权限和.如果超过,可以选择其它数据类型,而且建议不同模块,使用多个权限变量.

分享到:
评论

相关推荐

    权限控制算法的实现,很经典的

    根据给定文件的信息,本文将深入探讨一种经典的权限控制算法实现方法,并对该算法进行详细的解析。权限控制在软件系统特别是涉及用户交互的应用程序中尤为重要,它确保了不同用户角色能够访问到与其职责相匹配的数据...

    一种常用的权限控制算法的实现.htm

    一种常用的权限控制算法的实现.htm

    经典权限管理算法

    - **移动应用**:随着移动互联网的发展,移动应用同样面临着权限管理的需求,这种算法同样适用于移动平台上的权限控制。 #### 六、总结 通过以上分析可以看出,这种经典的权限管理算法不仅原理简单易懂,而且具有...

    Java权限控制的算法

    Java权限控制的算法,通过二进制数据来实现对权限的赋值,比对,提高了计算机运行效率也清晰一目了然

    用户登录权限分配的模型与算法实现

    通过采用合理的数据结构和算法设计,不仅能够确保用户登录验证过程的高效性,还能实现灵活的权限控制策略,为MMIS系统的稳定运行提供了坚实的基础。未来的研究工作中,还可以探索更高级别的安全措施和技术,进一步...

    M1卡密钥控制字算法程序

    密钥控制字(KCW)在M1卡中扮演着守门人的角色,它决定了卡片密钥的权限和用途,包括读取、写入或其他特定操作的许可。而“M1卡密钥控制字算法程序”这一工具的开发,正是为了解决M1卡在密钥管理方面的安全需求。该...

    S50及其兼容卡密钥控制字算法程序

    《S50及其兼容卡密钥控制字算法程序详解》 在信息技术领域,智能卡的安全性至关重要,尤其是在涉及数据加密和身份验证的应用中。S50卡是一种广泛应用的非接触式智能卡,常用于门禁系统、公交卡、电子钱包等场景。其...

    java权限设置,和java处理字符和二进制的转换

    1. 权限控制算法:我们可以使用位运算来实现权限控制。首先,我们定义每一个操作的唯一整数值,然后使用位运算符来检查用户是否具有某个操作权限。 2. 权限值的计算:我们可以使用位运算来计算用户的权限值。例如,...

    【控制位】M1卡控制字算法程序.zip

    总结来说,M1卡的控制字算法是其安全机制的重要组成部分,涉及到数据加密、权限控制和错误检测等多个方面。这个程序"【控制位】M1卡控制字算法程序.exe"可以帮助我们更好地理解和操作M1卡的控制字,提升系统的安全性...

    某型涡扇发动机起动燃油控制算法研究_余丽平1

    【某型涡扇发动机起动燃油控制算法研究】 在航空发动机设计中,起动特性扮演着至关重要的角色,它直接影响到发动机的安全性和可靠性。对于某型涡扇发动机来说,起动过程中必须具备超温保护机制,以防止在起动期间...

    基于CP-ABE算法的区块链数据访问控制方案.pdf

    数据访问控制机制是指对数据的访问权限进行控制,以确保数据的安全性。在本方案中,数据访问控制机制被用于实现用户级细粒度安全访问控制区块链数据。 知识点5:性能分析 对该方案进行的性能分析表明,该方案具有...

    M1卡密钥控制字算法程序2.0.zip

    使用“M1卡密钥控制字算法程序2.0”时,用户需要了解M1卡的扇区结构和密钥配置规则,例如,每个扇区的第16字节为访问控制字,由四个二进制位组成,分别代表Key A的读(R)、写(W)和Key B的读、写权限。通过合理的...

    基于改进CP-ABE算法的移动云计算数据安全访问控制方法(英文).pdf

    本文研究了一种基于改进的属性基加密(ABE)算法的移动云计算数据安全访问控制方法。文章介绍了云计算环境下数据访问的安全性和效率的提升方法,特别是针对移动云计算数据的访问控制。所采用的改进的CP-ABE算法能够...

    nginx添加权限控制

    本文将深入探讨如何在Nginx中添加权限控制,以增强网站的安全性,确保敏感资源不被未授权访问。 ### Nginx权限控制的重要性 在互联网世界中,数据安全至关重要。无论是个人网站还是企业级应用,保护用户数据和限制...

    电鳗觅食优化算法EEFO

    - **license.txt**:软件许可文件,描述了代码的使用权限和条款。 在MATLAB中实现EEFO算法,需要结合生物启发式优化的基本框架,运用随机数生成、适应度计算、选择、交叉和变异等操作。同时,合理设定参数如种群...

    基于注册系统采用范德蒙矩阵的软件权限控制

    本文介绍了一种基于软件注册系统的权限控制方法,该方法通过线性映射来定义动态构成的范德蒙矩阵及其逆矩阵。这种方法利用了矩阵运算的优势,如速度快、内存占用低等特点。文章首先介绍了软件权限控制的基本概念,...

    用户权限管理模块(C++实现)

    综上所述,"用户权限管理模块(C++实现)"是一个集成了C++面向对象编程、单例模式、用户权限控制和密码安全管理的实用系统。通过这样的设计,可以有效地控制和保护软件系统的资源,为用户提供安全、便捷的使用体验。

Global site tag (gtag.js) - Google Analytics