飞雪团队

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 60|回复: 0

XOR 加密简介

[复制链接]

1769

主题

1823

帖子

7148

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7148
发表于 2020-6-26 15:00:33 | 显示全部楼层 |阅读模式
本文介绍一种简单高效、非常安全的加密方法:XOR 加密。
                                                                                                               
09068d8443994d6e24454ff406ea97f8.jpg

一、 XOR 运算

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

JavaScript 语言的二进制运算,有一个专门的 XOR 运算符,写作^。
1 ^ 1 // 00 ^ 0 // 01 ^ 0 // 10 ^ 1 // 1
上面代码中,如果两个二进制位相同,就返回0,表示false;否则返回1,表示true。
二、 XOR 的应用

XOR 运算有一个很奇妙的特点:如果对一个值连续做两次 XOR,会返回这个值本身。
// 第一次 XOR1010 ^ 1111 // 0101// 第二次 XOR0101 ^ 1111 // 1010
上面代码中,原始值是1010,再任意选择一个值(上例是1111),做两次 XOR,最后总是会得到原始值1010。这在数学上是很容易证明的。
三、加密应用

XOR 的这个特点,使得它可以用于信息的加密。
message XOR key // cipherTextcipherText XOR key // message
上面代码中,原始信息是message,密钥是key,第一次 XOR 会得到加密文本cipherText。对方拿到以后,再用key做一次 XOR 运算,就会还原得到message。
e230a8394ff19223cfcb75013db5d608.gif

四、完美保密性

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

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

  • key的长度大于等于message
  • key必须是一次性的,且每次都要随机产生
理由很简单,如果每次的key都是随机的,那么产生的CipherText具有所有可能的值,而且是均匀分布,无法从CipherText看出message的任何特征。也就是说,它具有最大的"信息熵",因此完全不可能破解。这被称为 XOR 的"完美保密性"(perfect secrecy)。
满足上面两个条件的key,叫做 one-time pad(缩写为OTP),意思是"一次性密码本",因为以前这样的key都是印刷成密码本,每次使用的时候,必须从其中挑选key。
五、实例:哈希加密

下面的例子使用 XOR,对用户的登陆密码进行加密。实际运行效果看这里。
3cb7ca509e73ca95e3eacd245aac7dbe.png

第一步,用户设置登陆密码的时候,算出这个密码的哈希,这里使用的是 MD5 算法,也可以采用其他哈希算法。
const message = md5(password);
第二步,生成一个随机的 key。
<blockquote>// 生成一个随机整数,范围是 [min, max]function getRandomInt(min, max) {  return Math.floor(Math.random() * (max - min + 1)) + min;}// 生成一个随机的十六进制的值,在 0 ~ f 之间 function getHex() {  let n = 0;  for (let i = 4; i > 0; i--) {    n = (getRandomInt(0, 1)
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|飞雪团队

GMT+8, 2020-8-5 23:44 , Processed in 0.057272 second(s), 27 queries , Gzip On.

Powered by 飞雪团队

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表