python换位加密算法_移位XOR的加密算法还原(python 实现)

【#$hX y wciv0 ou!cosi 】

最近逆向学习过程中遇到了需要还原的加密算法

算法加密代码

加密算法a 是 简单的直接异或,还原比较简单,只需要拿密文反向再异或一次就可以了。

还原加密算法a

加密算法b 也是异或,但key不是固定值了,而是移位后的自身,还原过程相对复杂一点。

推导还原过程:

以移位 2 为例

思路:已知右移2位后,Key高位必然填充00,则密文高2位和 Key 高2位进行异或,就可以还原出明文的 高2位。而明文的高2位右移后,就可得到 Key 的 高第 3 位和 第 4 位,再用密文的高 3、4 位同Key 高 3、4异或,即可还原出明文的高 3 、4 位……循环此过程,即可还原出最终明文。

右移2位异或加密还原过程

还原加密算法b

运行结果:

运行结果

补充:

b加密过程中,移位的位数和字符的位置有关 ( i%8 ),在索引等于(0,8,16,24.....)等位置的时候,移位位数会等于0,也就是这时候,明文和key相等,两个一样的数异或,结果必为0。同理,相对于还原过程,满足这个位置的明文,也是还原不出来的。

所以可以在明文特殊位置添加无关符号,保证密文还原后主要信息的完整性。例如:

【#$hX y wciv0 ou!cosi 】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值