异或运算加密/解密

密钥

异或(XOR)运算加密一种简单高效、非常安全的加密方法。


异或(XOR)运算:

逻辑运算之中,除了 AND 和 OR,还有一种 XOR 运算,中文称为"异或运算"。

它的定义是:两个值相同时,返回false,否则返回true。也就是说,XOR可以用来判断两个值是否不同。

true XOR true // false
false XOR false // false
true XOR false // true
true XOR false // true


XOR运算有一个很奇妙的特点:如果对一个值连续做两次 XOR,会返回这个值本身。

// 第一次 XOR
1010 ^ 1111 // 0101
 
// 第二次 XOR
0101 ^ 1111 // 1010

上面代码中,原始值是1010,再任意选择一个值(上例是1111),做两次 XOR,最后总是会得到原始值1010。这在数学上是很容易证明的。


XOR 的这个特点,使得它可以用于信息的加密。

message XOR key // cipherText
cipherText XOR key // message

上面代码中,原始信息是message,密钥是key,第一次 XOR 会得到加密文本cipherText。对方拿到以后,再用key做一次 XOR 运算,就会还原得到message。


二战期间,各国为了电报加密,对密码学进行了大量的研究和实践,其中就包括 XOR 加密。

战后,美国数学家香农(Claude Shannon)将他的研究成果公开发表,证明了只要满足两个条件,XOR 加密是无法破解的。

  • key的长度大于等于message

  • key必须是一次性的,且每次都要随机产生

理由很简单,如果每次的key都是随机的,那么产生的CipherText具有所有可能的值,而且是均匀分布,无法从CipherText看出message的任何特征。也就是说,它具有最大的"信息熵",因此完全不可能破解。这被称为 XOR 的"完美保密性"(perfect secrecy)。

满足上面两个条件的key,叫做 one-time pad(缩写为OTP),意思是"一次性密码本",因为以前这样的key都是印刷成密码本,每次使用的时候,必须从其中挑选。


异或(XOR)运算加密/解密算法原理:

  从加密的主要方法看,换位法过于简单,特别是对于数据量少的情况很容易由密文猜出明文,而替换法不失为一种行之有效的简易算法。

  从各种替换法运算的特点看,异或运算最适合用于简易加解密运算,这种方法的原理是:当一个数A和另一个数B进行异或运算会生成另一个数C,如果再将C和B进行异或运算则C又会还原为A。


  相对于其他的简易加密算法,XOR算法的优点如下。

  (1)算法简单,对于高级语言很容易能实现。

  (2)速度快,可以在任何时候、任何地方使用。

  (3)对任何字符都是有效的,不像有些简易加密算法,只对西文字符有效,对中文加密后再解密无法还原为原来的字符。


在线摩尔斯密码工具,可实现将英文字母数字等转换成摩尔斯密码以及将摩尔斯密码转换成英文与数字的功能。

摩尔斯密码

在线摩尔斯密码工具,可实现将英文字母数字等转换成摩尔斯密码以及将摩尔斯密码转换成英文与数字的功能。
本工具可以将英文字母、数字和标点符号字符以及支持UNICODE字符包含中文中文汉字等字符加密转换成摩尔斯电码,同时可以将摩尔斯密码解密转换成可识别字符。

中文摩尔斯密码

本工具可以将英文字母、数字和标点符号字符以及支持UNICODE字符包含中文中文汉字等字符加密转换成摩尔斯电码,同时可以将摩尔斯密码解密转换成可识别字符。
在线栅栏密码加密解密工具。栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文。

栅栏密码加密/解密【W型】

在线栅栏密码加密解密工具。栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文。
在线凯撒密码加密解密工具。著名的凯撒密码是代换密码的一种,据说是罗马共和国末期的军事家、政治家,罗马帝国的奠基者凯撒率先使用加密函,因此这种加密方法被称为凯撒密码。凯撒密码的原理很简单:通过把字母移动一定的位数来实现加解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量为3时,所有的字母(不区分大小写)A被替换成D,B被替换成E,Z被替换成C。

凯撒密码加密/解密

在线凯撒密码加密解密工具。著名的凯撒密码是代换密码的一种,据说是罗马共和国末期的军事家、政治家,罗马帝国的奠基者凯撒率先使用加密函,因此这种加密方法被称为凯撒密码。凯撒密码的原理很简单:通过把字母移动一定的位数来实现加解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量为3时,所有的字母(不区分大小写)A被替换成D,B被替换成E,Z被替换成C。