现代的密码都是建立在计算机的基础之上,这是因为现代的密码所处理的数据量非常大,而且密码算法也非常复杂,不借助计算机的力量就无法完成加密和解密的操作。

计算机的操作对象并不是文字,而是由0和1排列而成的比特序列。无论是文字、图像、声音、视频还是程序,在计算机中都是使用比特序列来表示的。执行加密操作的程序,就是将表示明文的比特序列转换为表示密文的比特序列。

将现实世界中的东西映射为比特序列的操作称为编码。

例如midnight这个单词,我们可以对它的每个字母逐一进行编码,这种编码规则叫做ASCII。

m → 01101101

i   → 01101001

d  → 01101100

n  → 01101110

i   → 01101101

g  → 01100111

h  → 01101000

t   → 01110100

注意,这里m -> 01101101这个转换并不是加密而是编码。我们看了0和1的序列与密码没什么两样,但是计算机却可以看懂这些序列,并很快地反应出其所对应的字符串是midnight.


XOR

XOR全称:exclusive or,异或。概念看起来很复杂,实际运算本身一点也不复杂。

1个比特的XOR

1个比特的XOR运算规则如下:

  • 0   XOR   0   =   0        (0与0的XOR结果为0)
  • 0   XOR   1   =   1        (0与1的XOR结果为1)
  • 1   XOR   0   =   1        (1与0的XOR结果为1)
  • 1   XOR   1   =   0        (1与1的XOR结果为0)

如果将0理解为偶数,1理解为奇数,就可以将XOR和一般的加法运算等同起来。

  • 偶数(0)   +   偶数(0)   =   偶数(0)  
  • 偶数(0)   +   奇数(1)   =   奇数(1) 
  • 奇数(1)   +   偶数(0)   =   奇数(1) 
  • 奇数(1)   +   奇数(1)   =   偶数(0)

由于XOR和加法运算很相似,因此一般用+和O组合而成 的符号 ⊕ 来表示XOR.

  • 0    ⊕    0    =    0        (0与0的XOR结果为0)
  • 0    ⊕    1    =    1        (0与1的XOR结果为1)
  • 1    ⊕    0    =    1        (1与0的XOR结果为1)
  • 1    ⊕    1    =    0        (1与1的XOR结果为0)

为了更加直观地理解XOR,大家可以想象一下黑白棋中的棋子。

我们将一个棋子保持原状(不反转)看做0,将一个棋子的翻转到另一面看做1,则XOR运算就相当于将黑白棋的一个棋子进行翻转的操作。

  • 不翻转(0)    ⊕    不翻转(0)     =    不翻转(0) 
  • 不翻转(0)    ⊕    翻转(1)        =     翻转(1)
  •  翻转(1)      ⊕    不翻转(0)     =     翻转(1)
  •  翻转(1)      ⊕     翻转(1)        =    不翻转(0)

通过上述场景,我们应该能够理解这样一个规律。即两个相同的数进行XOR运算的结果一定为0,两个不同的数进行XOR运算的结果为1。


比特序列的XOR

前边我们介绍了1个比特之间的XOR运算,而如果是长比特序列之间的XOR运算,则只要将其中每个对应的比特进行XOR运算即可。

假设我们将01001100这个比特序列称为A,将10101010这个比特序列称为B,则A与B的XOR运算可以像下边这样逐一对各个比特进行计算。与加法运算不同的是,XOR运算中不需要进位。

        0  1  0  0  1  1  0  0                 A

⊕     1  0  1  0  1  0  1  0                        B

        1  1  1  0  0  1  1  0                 A ⊕ B

由于两个相同 的数进行XOR运算结果一定为0,因此如果将AB的结果再与B进行XOR运算,则结果应该变回A。也就是说,两步运算中B会相互抵消。

        1  1  1  0  0  1  1  0                 A ⊕ B

⊕     1  0  1  0  1  0  1  0                        B

        0  1  0  0  1  1  0  0                 A

到这里,我们会发现,上边计算和加解密的步骤非常相似。

  • 将明文A用密钥B加密,得到密文A⊕B
  • 将密文A⊕B用密钥B解密,得到明文A

实际上,只要选择一个合适的B,仅仅使用XOR就可以实现一个高强度的密码。

本节重点总结一下XOR运算,关于密码相关运算不再赘述,后续内容会逐一进行学习总结。

比特序列的XOR运算相关推荐

  1. 序列的卷积运算与相关运算——MATLAB

    一.实验目的 1.掌握有限长序列线性卷积的编程计算原理,并能够利用Matlab或C语言编写算法程序进行线性卷积运算的程序实现; 2.学会线性卷积函数和线性相关函数的使用方法,并能利用二者进行有限长序列 ...

  2. php调用mysql加密函数_PHP MySQL应用中使用XOR运算加密算法分享

    XOR算法原理 从加密的主要方法看,换位法过于简单,特别是对于数据量少的情况很容易由密文猜出明文,而替换法不失为一种行之有效的简易算法. 从各种替换法运算的特点看,异或运算最适合用于简易加解密运算,这 ...

  3. 异或(XOR)运算加密/解密在线工具

    异或(XOR)运算加密/解密在线工具,工具链接:http://www.atoolbox.net/Tool.php?Id=857 异或(XOR)运算加密一种简单高效.非常安全的加密方法. 异或(XOR) ...

  4. 异或(XOR)运算加密/解密算法

    本文将介绍一个简单易用的加密/解密算法:使用异或(XOR)运算.本算法原理简单,旨在使读者对信息的加密/解密有一个更加直观的印象. XOR算法原理 从加密的主要方法看,换位法过于简单,特别是对于数据量 ...

  5. c# xor运算_C#程序使用XOR运算符交换数字

    c# xor运算 Given two integer numbers and we have to swap them using XOR operator in C#. 给定两个整数,我们必须在C# ...

  6. python中异或运算_Tensorflow轻松实现XOR运算的方式

    对于"XOR"大家应该都不陌生,我们在各种课程中都会遇到,它是一个数学逻辑运算符号,在计算机中表示为"XOR",在数学中表示为" ",学名为 ...

  7. mysql xor详细_PHP MySQL应用中使用XOR运算加密算法分享

    XOR算法原理 从加密的主要方法看,换位法过于简单,特别是对于数据量少的情况很容易由密文猜出明文,而替换法不失为一种行之有效的简易算法. 从各种替换法运算的特点看,异或运算最适合用于简易加解密运算,这 ...

  8. python中的xor运算

    Python的表达式写法与C/C++类似.只是在某些写法有所差别. 主要的算术运算符与C/C++类似.+, -, *, /, //, **, ~, %分别表示加法或者取正.减法或者取负.乘法.除法.整 ...

  9. 基于Tensorflow轻松实现XOR运算

    对于"XOR"大家应该都不陌生,我们在各种课程中都会遇到,它是一个数学逻辑运算符号,在计算机中表示为"XOR",在数学中表示为"",学名为& ...

最新文章

  1. Windows下配置scrapy需要MVC的14.0版本(转载)
  2. 最新综述 | 基于深度学习的立体视觉深度估计
  3. python文件打包成exe可执行文件
  4. Android中堆unlink利用学习
  5. 那些很骚很酷很有内涵的话
  6. 数据中心节能的13个有用小知识
  7. USACO翻译:USACO 2014 DEC Silver三题
  8. python 内置模块 subprocess
  9. 机器学习代码实战——保存和加载模型(Save and Load Model)
  10. Python+Selenium FAQ
  11. android 7.0添加菜单,Android 7.0 settings中添加/删除菜单
  12. 韦东山Linux嵌入式学习——硬件复习
  13. 《华林科纳-半导体工艺》PVA 刷擦洗
  14. Linux下使用USB转串口转换器
  15. 计算机第一次月考试题,计算机基础第一次月考试题.doc
  16. 【Python处理EXCEL】--pandas导入Excel文件
  17. 视频文件的原声如何批量更换
  18. VS2015 密钥 专业版和企业版
  19. 设备管理器的蓝牙设备卸载了,找不到蓝牙
  20. involution:比卷积、自注意力机制更好的神经网络新算子

热门文章

  1. 实验七、555时基电路及设计
  2. 定义不凡 | IBT抢购活动总抢购量达21亿完美收官
  3. Android 使用VasDolly 实现多渠道打包
  4. Hexo博客SEO优化
  5. 更改电脑桌面小图标——更好的摸鱼小技巧
  6. 山寨手机软件测试工程师,安卓手机跑分作弊方法公布,仅供学习交流 Chainfire3D...
  7. 西安住房公积金查询网站
  8. topcoder是什么?
  9. 网站推广方法大全(2008迎奥运版)
  10. 【半年总结】思想与技术的腾飞