异或密钥:
  • 字符编码:

说明

XOR:eXclusive OR 的缩写,逻辑运算之中,除了 AND 和 OR,还有一种 XOR 运算,中文称为"异或运算"。
它的定义是:两个值相同时,返回 false,否则返回 true。也就是说,XOR 可以用来判断两个值是否相同。

  
                true XOR true = false 
                false XOR false = false 
                true XOR false = true 
                false XOR true = true 
                

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

  
                // 第一次 XOR
                1010 XOR 1111 = 0101

                // 第二次 XOR
                0101 XOR 1111 = 1010
                
正是这个特点,使得 XOR 可以用于信息的加密。

二战期间,各国为了电报加密,对密码学进行了大量的研究和实践,其中就包括 XOR 加密。 战后,美国数学家香农(Claude Shannon)将他的研究成果公开发表,证明了只要满足两个条件,XOR 加密是无法破解的:

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

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


密钥(偏移)Text 和 Hex
  • Text 表示是文本格式,加密前会使用 UTF-8 编码,把它转成 byte[] 数组
  • Hex 表示是十六进制格式,加密前会把十六进制字符串转成 byte[] 数组
加密说明
  • 加密结果输出支持 Base64
  • 加密结果输出支持 十六进制
解密说明
  • 解密结果输入支持 Base64
  • 解密结果输入支持 十六进制,比如格式 abcdefab cd ef0xab,0xcd,0xef
如果是解密 Base64 字符串,请选择输出Base64单选框;
如果是解密 十六进制 字符串,请选择输出十六进制单选框。