查看: 3778|回复: 1

[讨论] 【加密技术】浅谈利用 XOR 对文件进行对称加密

[复制链接]

40

主题

817

回帖

14

精华

版主

经验
8436
硬币
1413 枚

赞助用户永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第五届MW杯亚军对不起,小姐盲猜大王数字君X68数字君X68数字君X78

发表于 2021-9-17 15:04:27 | 显示全部楼层 |阅读模式
无聊来水一帖(

XOR,异或运算(^),是一种位运算,也就是将两个数转成二进制再对每一位进行运算,其运算规则为:
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0

举例:运算 123 ^ 456
123 的 二进制是:1111011
456 的 二进制是:111001000
我们将其排列一下:
001111011
111001000

按 XOR 运算规则即得:
110110011
所以 123 ^ 456 = 435

但这跟文件加密有什么关系呢?
首先从物理上文件都是通过二进制存储的,我们一般看不到也看不懂(
而文件加密嘛,我们就可以通过修改文件的二进制数据来完成
那么这里就要祭出本帖的主角:XOR
XOR 运算有一个有趣的性质:
(0 ^ 0) ^ 0 = 0
(0 ^ 1) ^ 1 = 0
(1 ^ 0) ^ 0 = 1
(1 ^ 1) ^ 1 = 1
即:(a ^ b) ^ b = a
那么我们就可以把 a 看作“原始文件”,b 看作“密码”
我们的“加密文件”也就是 c = a ^ b
而对“加密文件”进行解密只需要用同样的密码 “b” 进行运算,也就是 c ^ b = a
这就是一种简单的对称加密,对称的意思是说加密和解密用到的是相同的密码

原理很简单,那我们最常用的 Clickteam Fusion 上可以使用吗?
答案是肯定的,我们只需要找到一个能通过二进制的方式读写文件的扩展即可
那么密码“b”怎么设置呢?
最简单的方法就是写一段文本,然后循环调用这个文本中某一个字符的 ASCII 值作为“b”
当然还有更复杂的方法去设置密码“b”,比如像 RC4 啥的
这里我们就用上面这个最简单的方法来设置密码了,那么我们还需要一个 ASCII 的扩展,事件如下:

                               
登录/注册后可看大图

这里处理的是一个文本文件,处理之后大概率就变成一段不可读的文本了,会显示一堆 NUL 啥的(
不过可以看一下处理之后的二进制数据(

                               
登录/注册后可看大图


以上就是本帖的全部内容了(

评分

参与人数 1硬币 +2 收起 理由
绿色的糖果 + 2

查看全部评分

Moonstruck Blossom
个人网站:dasasdhba.github.io

162

主题

1390

回帖

12

精华

管理员

脚滑王

经验
9040
硬币
834 枚

永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第十一届MW杯冠军欢乐演员对不起,小姐欢迎光临秘密合战!请务必再光临秘密合战!

发表于 2021-9-17 19:29:56 | 显示全部楼层
XOR加密可以说是最简单的加密算法之一了
也非常实用就是啦
个人网站wsw233.com
新作 AUEV0.5.0 制作中!
解说/版聊视频随缘更新!
您需要登录后才可以回帖 登录 | 创建账户

本版积分规则