異或加密演算法

2021-08-22 03:30:09 字數 1129 閱讀 7561

異或加密是一種很簡單的加密演算法,無論是原理還是操作性上,都不具備任何難度,所以,在做一些簡單的加密時,被廣為採用。

但因為很簡答,破解起來也很容易,所以對於更加私密的資訊,不要用這種方法加密。

下面我們簡單地介紹一下異或的運算:

數**算符為xor(exclusive or),在計算機中通常用"^"的符號表示(在英文模式下,按住shift鍵+鍵盤上方的數字6)

在二進位制中:

1 xor 0=1

0 xor 1=1

1 xor 1=0

0 xor 0=0

可以看出若兩個數相同取0,不同取1。

例:運算11001 ^ 01011=10010

用其他進製表示的數做異或運算時,則應先將他們化為二進位制的數,再做運算。(不足的位在前邊填0補齊)

例:計算6^3=110^011=101

異或運算具有可逆性。

即:若a^b=c,則有b^c=a (a,b,c分別表示0或1)

利用前面的異或運算規則,我們就其中之一分析:

1 xor 0=1        則     0 xor 1=1

原理:根據異或的運算規則,相同為0,不同為1;

若兩個數a,b相同,a=b,則用任意乙個數與0做異或時,即得到這個數本身,也就是另乙個數;

應用 1 xor 0 = 1  ,  0 xor 0= 0 這兩個運算規則(相當於取這個數)。

若兩個數a,b不同,a=~b,則用任意乙個數與1做異或時,即得到這個數的相反,也就是另乙個數

應用 1 xor 1 = 0  ,  0 xor 1 = 1 這兩個運算規則(相當於對這個數取反)。  

我們不妨對異或的可逆性進行推廣,對任意的兩串二進位制數做異或,得到的結果,再與其中任意一串二進位制數做異或,得到另一串二進位制數。

即a^b=c , 則 b^c=a.(a,b,c分別表示一串二進位制數)

與上面的公式形式上是相同的。 

那麼,若a是想要加密的資訊,則有一金鑰b,對a和b做異或,得到的c就是加密後的資訊,可進行傳輸。

得到c後,只需要再 與b做異或,即可得到原資訊a。

若應用到字串上,則字串上每乙個字元都表示一串二進位制數。

例:

#include main()

異或加密演算法

異或加密是通過使用布林代數中的異或函式 xor 實現的,xor是乙個二元運算子 即有兩個引數,類似加號 按其名稱 異或 容易推斷兩個引數中有且僅有乙個為真 即兩引數相異 時,結果返回真,真值表如下 ab a xor btt ftft fttf ff異或加密背後的原理是如果不知道兩個引數的初值,就不可...

異或加密演算法

注意,這篇文章自己用來備忘 加密 function prefixinteger num function autoset word return ret function submit var numbers new array text.length encnum new array text.l...

Android資料加密之異或加密演算法

異或運算中,如果某個字元 或數值 x 與 乙個數值m 進行異或運算得到y,則再用y 與 m 進行異或運算就可以還原為 x 因此應用這個原理可以實現資料的加密解密功能。1.固定key的方式 這種方式加密解密 演算法一樣 public byte encrypt byte bytes int len by...