异或加密的原理是什么(异或加密解密)
导语:一图看懂异或加密
应用程序保护是指单词和应用程序
什么是异或加密在逻辑运算中,除了 与 或 非 这 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 个概念,
明文密钥密文明文是指是要被保护的原始信息,密钥指的是用来加密的文本,密文指的是被加密后得到的文本。
异或加密特性异或加密是一种对称加密,对称加密的意思是用相同的密钥对明文加密得到密文,密文再用相同的密钥解密得到明文。异或加密具有如下的特性:
异或加密具有以下特性(引自维基百科):
简单异或密码(英语: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 部分组成,分别是
明文密钥异或运算规则通过遍历明文的每一个字符,并按照异或运算规则从密钥中取出一个或多个字符,与明文的字符进行异或运算,最后得到密文。信息接收方收到密文后,运用相同的异或运算规则用密钥进行解密,就得到了明文。那么如何将明文与密钥进行异或运算,就成了异或加密算法的重点。
异或运算规则异或运算规则是为了解决明文与密文如何进行异或运算的问题,因为明文和密文长度可能不一样,如何保证明文的每个字符都有与之对应的密文字符进行异或,并且在解密时保证按照相同的算法进行异或运算得到明文,是异或运算算法要考虑的,这里我们会用到一种新的运算,叫 取余,这里不考虑为负数的情况
取余运算(记为 %),表示的是 被除数 除以 除数之后的余数,比如 8 / 5 = 1 余 3,因此 8 % 5 = 3,另外取余运算规定 如果被除数小于除数,那么取余结果就为被除数,因此 5 % 8 = 5,来看下面的例子:
0%3=0 1%3=12%3=23%3=04%3=15%3=26%3=07%3=1
你发现了吗,结果总是 0,1,2 的循环,我们就可以通过让明文每个字符的索引对密文的总长度取余,得到的结果作为密文的索引下标,取出对应的密文字符,与明文字符进行异或运算就可以啦
看下面这个例子吧
动画演示 异或加密 运算过程
你都学会了吗?
另外我写了一个异或加密解密的小工具,点击下面的 了解更多 就可以使用啦,你可以用这个小工具把要加密的信息用密钥进行加密,然后把密文发给你的朋友,让他们用相同的密钥进行解密,就可以啦。
试着解密下面这个字符串看看吧,下面的是密文,密钥是我的名字(5个汉字呦)。
czKHjG0BqxHrDroAh4xIEoIXYgdyPQ091MGeKNbVkh25PQGxmwCMwJsAghTAN+c5UBAWPQ8FEi9978HatlYJKpEp1ClIByM5mhGUHzAQjMCt84eMrt6FOvsW/wT4IuUitCiKwKUEDwWjEVUp7d+jKXwgLU7WZvaO62bpc29OzmahjpMy
今天就到这里吧。
本文内容由小嫣整理编辑!