主播最近迷上了密码学,就让我们从异或开启密码学的学习把!
异或密码(XOR)运算规则
异或是一种简单的对称加密,我们用 ⊕ 来表示运算符号,“1”为“true”,“0”为“false”
0 ⊕ 0 = 0
1 ⊕ 0 = 1
0 ⊕ 1 = 1
1 ⊕ 1 = 0
A ⊕ (B ⊕ C) =(A ⊕ B) ⊕ C
(B ⊕ A) ⊕ A =B ⊕ 0 = B
长序列间的XOR计算
前面我们介绍的是一位的计算,那如果是长序列应该怎样计算呢?
XOR的运算和加法类似,但是加法会有进位,而XOR没有。我们先来进行一个演示:
0 1 0 0 1 0 1 0 0 ·····(A)
⊕ 1 1 0 1 0 1 0 0 0 ·····(B)
-------------------------------------
1 0 0 1 1 1 1 0 0 ·····(C)
(A) ⊕ (B) =(C) 不难发现,长序列的计算,只需要逐位进行运算即可。
如果A为明文,B为密钥,我们就能通过以上运算得到密文C。那么如果加密者将密文C交给接受者后,对方应该如何通过密文C和密钥B解出明文呢?
1 0 0 1 1 1 1 0 0 ·····(C)
⊕ 1 1 0 1 0 1 0 0 0 ·····(B)
--------------------------------------
0 1 0 0 1 0 1 0 0 ·····(A)
其实只要将密文C和密钥B再进行一次异或运算就可以啦!
XOR看起来非常简单,但是我们可以尝试让它变得复杂起来。如图:
通过XOR,原来图像被完全打乱隐藏起来了。