查看: 1555|回复: 1

[密码课] 异或密码(X0R)

  • 打卡总天数:2

积分成就

用户组:管理员

书币:130159

推理币:775950

发表于 2019-6-24 10:50:17 | 显示全部楼层 |阅读模式
异或密码是密码学中一种简单的加密算法,属于维吉尼亚密码的一种变体,不过其和维吉尼亚密码本质上并不相同,异或密码主要基于异或运算进行加密。
异或运算是计算机程序设计语言中,一种很重要的基于二进制的位运算,其中异或的数学符号为“⊕”,计算机符号为“XOR”。
异或密码不管是加密和解密都遵循着一个固定的异或运算原则进行,如下所示:
A⊕0=A
0⊕A=A
A⊕A=0
(这个规则的意思很简单,,即不相同的数字进行异或等于1,相同的数字进行异或等于0)
根据以上的运算逻辑,我们在加密的时候,只需要将明文转换成8位数二进制ASII码,之后和密钥按位进行异或运算,即可得出密文,解密也是同样的道理,只需要将加密后的结果与密钥再次进行按位异或运算即可,记得区分大小写。
举个简单的例子:
我们要用密钥:L
加密明文:TUI

194907webtyxbdeozgezt6.gif

首先,在加密之前,我们需要先将明文和密钥都转换成8位数的二进制ASII码,根据上表查找即可。
转换后如下:
密钥:
01001100
明文:
01010100-01010101-01001001
之后,我们将明文写在上面,密钥写在下面(密钥重复使用),然后按位进行异或运算即可,如下所示:
01010100-01010101-01001001(明文)
01001100-01001100-01001100(密钥)
=
00011000-00011001-00000101(密文)
解密的话,只需要将加密后的结果与密钥再次进行按位异或运算即可,如下所示:
00011000-00011001-00000101(密文)
01001100-01001100-01001100(密钥)
=
01010100-01010101-01001001(明文)
最后,值得说明的是异或密码安全性不高,很容易被破解,所以对于私密的信息,不建议用这种方法进行加密,但是可以利用该密码和其他密码进行组合加密,这个就看你们自己发挥了。

积分成就

用户组:推理之神

书币:46

推理币:30310

发表于 2020-3-2 18:53:22 来自移动端 | 显示全部楼层
很有用。
返回列表 发新主题 回复
小黑屋| 隐私政策| 侵权投诉| 数字千年版权法(DMCA)| 切换繁体 |捐助本站
copyright 2019-2023 推理罪 All Rights Reserved