数据加密 ---- 异或加密

简介:

异或加密其实就是利用异或运算的自反性。一个数A 连续异或同样一个数B,最后的结果还是A 自身。即,

A xor B xor B = A

如 数据加密 ---- 总篇 中提到的,对于加密其实就是算法 + 密钥,而对于异或加密算法比较简单。

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

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

key的长度大于等于message

key必须是一次性的,且每次都要随机产生

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

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

异或加密是强度极低的一种方式,除非极长的密码,才能确保加密的有效性,但是,使密码达到与数据一致,显然是不可能的,因此,异或加密的数据长度会受到限制。由于异或加密的强度极低,因此,应根据数据库加密的保密性来决定采用什么样的加密技术,如果想获得比较可靠的加密,可以采用分组交换式加密方案。

 

密钥保存:

如 数据加密 ---- 总篇 中提到的,数据的加密技术中也包含了密钥的管理技术,包括密钥的产生、分配、保存、更换和销毁等各个环节上的保密措施。不论是这里的异或加密,还是其他的加密方式,密钥的保护十分重要。对于Java 来说,很容易被反编译,这边的密钥可以通过native 保存(一般so还是很难被破译)或者服务器上。

当然,为了让 XOR 加密更可靠,可以添加一些其他的操作,例如,对数据进行循环的位移。

 

 

附:

Android 中实例实现请看:https://blog.csdn.net/shift_wwx/article/details/84062196

 

参考:

https://blog.csdn.net/chentengkui/article/details/72997534

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

私房菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值