异或加密是对称密码吗(一文看懂异或加密)(1)

应用程序保护是指单词和应用程序

什么是异或加密

在逻辑运算中,除了 与 或 非 这 3 种运算之外,还有一种运算运算叫做 异或(xor),符号记为 ^,异或运算简单来说就是 相同为 0,不同为 1

1 ^ 1 = 0

1 ^ 0 = 1

0 ^ 1 = 1

0 ^ 0 = 0

异或加密是一种加密算法,利用了异或运算,上面的例子告诉我们结果 0 有可能由 1 与 1 运算得出,也有可能由 0 与 0 运算得出,因此如果结果 0 被截获信息的人得到,无法轻易的推出原文到底是 0 还是 1,从而起到了保护原始信息的作用。

说到加密,这里就必须提到 3 个概念,

  1. 明文
  2. 密钥
  3. 密文

明文是指是要被保护的原始信息,密钥指的是用来加密的文本,密文指的是被加密后得到的文本。

异或加密特性

异或加密是一种对称加密,对称加密的意思是用相同的密钥对明文加密得到密文,密文再用相同的密钥解密得到明文。异或加密具有如下的特性:

异或加密具有以下特性(引自维基百科):

简单异或密码(英语:simple XOR cipher)是密码学中一种简单的加密算法,它按照如下原则进行运算:

1. A ^ 0 = A

2. A ^ A = 0

3. (A ^ B) ^ C = A ^ (B ^ C)

4. (B ^ A) ^ A = B ^ 0 = B

由 规则1 得到 任何值与 0 异或都得原来的值

由 规则2 得到 任何两个相同的值异或都得 0

由 规则3 得到 异或的顺序不影响最后的结果

由 规则4 得到 任何值与同一个值异或 2 次得到原来的值

我们正是利用了规则 4,达到了加密解密的效果

异或加密算法

异或加密算法由 3 部分组成,分别是

  1. 明文
  2. 密钥
  3. 异或运算规则

通过遍历明文的每一个字符,并按照异或运算规则从密钥中取出一个或多个字符,与明文的字符进行异或运算,最后得到密文。信息接收方收到密文后,运用相同的异或运算规则用密钥进行解密,就得到了明文。那么如何将明文与密钥进行异或运算,就成了异或加密算法的重点。

异或运算规则

异或运算规则是为了解决明文与密文如何进行异或运算的问题,因为明文和密文长度可能不一样,如何保证明文的每个字符都有与之对应的密文字符进行异或,并且在解密时保证按照相同的算法进行异或运算得到明文,是异或运算算法要考虑的,这里我们会用到一种新的运算,叫 取余,这里不考虑为负数的情况

取余运算(记为 %),表示的是 被除数 除以 除数之后的余数,比如 8 / 5 = 1 余 3,因此 8 % 5 = 3,另外取余运算规定 如果被除数小于除数,那么取余结果就为被除数,因此 5 % 8 = 5,来看下面的例子:

0%3=0 1%3=1 2%3=2 3%3=0 4%3=1 5%3=2 6%3=0 7%3=1

你发现了吗,结果总是 0,1,2 的循环,我们就可以通过让明文每个字符的索引对密文的总长度取余,得到的结果作为密文的索引下标,取出对应的密文字符,与明文字符进行异或运算就可以啦

看下面这个例子吧

异或加密是对称密码吗(一文看懂异或加密)(2)

动画演示 异或加密 运算过程

你都学会了吗?

另外我写了一个异或加密解密的小工具,点击下面的 了解更多 就可以使用啦,你可以用这个小工具把要加密的信息用密钥进行加密,然后把密文发给你的朋友,让他们用相同的密钥进行解密,就可以啦。

试着解密下面这个字符串看看吧,下面的是密文,密钥是我的名字(5个汉字呦)。

czKHjG0BqxHrDroAh4xIEoIXYgdyPQ091MGeKNbVkh25PQGxmwCMwJsAghTAN c5UBAWPQ8FEi9978HatlYJKpEp1ClIByM5mhGUHzAQjMCt84eMrt6FOvsW/wT4IuUitCiKwKUEDwWjEVUp7d jKXwgLU7WZvaO62bpc29OzmahjpMy

今天就到这里吧。

,