双向流式加密算法

本文介绍了一种双向流式加密算法,旨在增强信息的抗反向分析和差分分析能力。通过正反向遍历Byte数组并结合密钥进行异或运算,使每个元素与所有元素相关,实现加密。该算法提供了加密和解密的示例代码,并指出适当增加加密次数能提高密文安全性,但会增加计算时间。
摘要由CSDN通过智能技术生成
由于在很多加密应用中,要求加密后的信息具有抗反向分析(例如,破解者知道明文的前若干
个字符,在此基础上力图反推出密钥,并解密其余的信息)的能力。本文提出了一种等长双向流
式加密算法,经此算法加密的信息,其中的数据有全局的信息相关性,具有极强的抗反向分析以
及差分分析的能力。

  算法思路:
  将加解密对象看成一个Byte数组A[N]。首先,我们从头到尾对它进行遍历,将每次遇到的元素
的值与前一个元素的值相加,并写回到数组中。即 A[i]+A[i-1] => A[i] (i从2递增到N)。这样
一来,后面元素的密文就直接依赖于之前的元素的值,达到了部分抗分析的目的。不难发现,进
行一遍遍历,只能让数组中下标大的元素对下标小的元素形成依赖,而理想中的情况应该是混合
型的依赖。为了解决这个缺陷,我们很容易的想到了反向遍历——思路与正向遍历相同,只是起
止点颠倒了一下: A[i]+A[i+1] => A[i] (i从N-1递减到1)。经过了正反两次遍历,数组中的每
个元素的值都变得和其它所有元素的值相关了——由此,本算法也就相应的具备了抗反向分析以
及差分分析的能力。
  在解决了信息相关性的问题之后,我们接下来需要思考的是,作为一个加密算法,密钥如何被
放置在上面的计算过程中去。首先,我分别在正向遍历和反向遍历中的求和计算过程中加入了一
个长度为一个字节的密钥,于是,加密过程就变成了:
    (A[i]+A[i-1]) xor Key1 => A[
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值