1. 程式人生 > >許可權管理系統中二進位制的運用

許可權管理系統中二進位制的運用

參考轉載自:https://www.cnblogs.com/zhaord/articles/4839877.html

二進位制的許可權管理基本運用到二進位制的位運算

位運算的內容:

 或(|)運算的內容有:  1|1 =1 、1|0=1  、0|1=1、0|0=0. 通過或運算可以看出,只要有一個數位為1,那麼所求結果就為1.

       與(&)運算的內容有: 1&1 =1 、1&0=0、0&1=0、0&0=0,通過與運算可以看出,只要有一數為0,那麼所求結果就為0.

       求補(~)運算的內容有  ~1=0、~0=1,求補運算表面上看起來就是 1和0倒轉過來。

我們假設採用8位二進位制代表具體的許可權集合具體關係如下:

      |  下載   |  列印   |  檢視   |  稽核    |  詳細  |  刪除  |   編輯  |   建立 |

      |     0     |     0     |     0     |     0      |     0    |    0     |      0    |     0    |

如果某位為0,這表示沒有改操作許可權,如果為1,這表示具有該操作許可權,比如: 0000 0001 表示只有建立許可權、00100011這表示有建立、編輯、檢視著三種操作許可權,依次類推。

       如果用一個整數來代表一個操作許可權的話,那麼

       建立=1、編輯=2、刪除=4、詳細=8、稽核=16、檢視=32、列印=64、下載=128、全部=255(前面所有內容相加)、無=0。

       那麼數字3(00000011)則表示有建立和編輯的許可權,13(00001101)折表示有詳細、建立、編輯這三種操作許可權。

1、授權操作

如果一個功能已經有了 建立和編輯的許可權,二進位制就是 0000 0011 ,這麼現在要新增一個檢視(0010 0000)許可權,授權之後的許可權的二進位制就為(0010 0011),通過2.1的內容可知,當

    0000 0011

|  0010 0000

-----------------

    0010 0011,

這樣就通過了或運算新增給原有的許可權新增一個新的許可權

2、取消授權操作

  如果一個功能已經有了檢視、建立、編輯的許可權,二進位制就是 0010 0011 ,現在要求要取消編輯的許可權,取消授權之後的二進位制就是: 0010 0001 ,整個內容看起來就是對編輯位進行求反運算,那麼我們先看編輯許可權的求補運算的結果: 

~ 0000 0010

----------------

    1111 1101 ,

那麼求補的結果在和原有許可權進行和運算 

    (0010 0011)

& (1111 1101)

-----------------

    (0010 0001) ,

這樣就得到了取消之後的二進位制 0010 0001(17)

3、許可權判斷

現在要判斷 0011 1100 這個代表的許可權操作中,有沒有稽核許可權(0001 0000),那麼我們對這兩個許可權進行 與運算 

(0011 1100)

& (0001 0000)

-------------------------

        (0001 0000),

判斷有沒有建立許可權(0000 0001),

         (0011 1100)

     & (0000 0001)

--------------------------

         0000 0000,

也就是說,兩個許可權進行與運算,如果與運算的結果為0,則表示無該操作,反正,則表示具有該操作。

 

總結:

許可權操作基本分3部分  授權、取消授權與許可權判斷