idea java 代码混淆加密_IDEA加密算法

在IDEA 加密和解密过程中,明文和密文是分成 64 比特的块来处理的,但密钥宽度是 128 比特,加解密是依赖于下面的三种代数群的运算,每个代数群都是 16 比特数的运算,其中包括:

两个16 比特子块的按位异或 (XOR) 运算.

模加运算,两个整数相加后,对 216 取模,即忽略*高位进位的加法.

模乘运算,两个数求积后,对费马数 p=216 +1取模.

由于上面三种运算的任意两个运算间不满足分配律和结合律,使输入之间实现了较复杂的组合运算,图 3.1 给出了IDEA 算法的加密过程,在 8 轮变换之后,紧接着是一个输出变换.它们级联起来完成一次完整的加密,算法的解密过程和加密过程相同,只是参与运算的子密钥块小同,这个特性也被称为加密和解密的相似性,从图 3.1 可看出 IDEA算法包括 34 次16 位模乘和模加, 48 次异或运算。

df3c981a40ff6fee4c648d36a8d876ac.png

如图3.1 所示, 64位的明文被分为 4 个16 比特的子块,四个明文的子模块被 52 个16 比特的密钥转换为 4 个16 比特的密文子块,每轮变换使用 6 个密钥子块,第 r( r=1,…,8)轮使用的密钥为 Z1 (R), … ,Z 6(R) ,若将输出置换作为*后一轮,它用四个密钥,标记为 Z1 (9), … ,Z 4(9) 用于加密和解密的 52个子密钥是由用户提供的 128 位密钥产生的,加密的各轮密钥是由原始密钥向左依次作 25 比特的循环移位后抽取得到的,解密密钥是由对应的加密密钥经模逆运算后产生的,假设 Ki(r) 表示解时第 r轮的第i个密钥,解密密钥和加密密钥具体关系如下:

abc02b9391ffe9cc4e3edb5dbcfa6067.png

由于解密密钥产生的复杂性, IDEA 的加密速度快于解密。

在每一轮的核心中,包含有两个模乘模块和两个模加模块,这种结构被称为乘加(MA) 结构,即图3.1 中虚线标注的部分,它是 IDEA 实现中的关键非线性构件,研究表明8轮迭代后能达到雪崩性的扩散和混淆,因而它能抵抗差分分析。

超时代手机视频加密转载 www.360drm.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值