毕业设计Java基于Misty1算法的加密软件的实现

MISTY1介绍

Misty1是一个分组密码算法,由在三菱工作的Eisaku Takeda提交给NESSIE,于1996年公布。它的密钥长度是128位,明文长度是64位,适用于资源紧张的环境。整个算法由递归等组成,每一个层次的结构采用稳妥的Feistel结构。MISTY1是一种迭代密码,可以迭代超过8轮,或者更普遍的是迭代4回。它用128位密钥对64位数据进行不确定轮回的加密,采用了两个S-盒,其中一个是7×7的S-盒,s7,另一个是9×9的S-盒,s9。Misty1取得了良好的阻力线和鉴别攻击,并且使能实行以相对较少的逻辑组件中执行函数的程度相对较低。

MISTY1算法是一种迭代密码,用128位密钥对64位数据进行不确定轮回的加密。它采用了经证实可以抵抗密码微分分析和线性分析的安全理论,在设计时就考虑到了在硬件环境和软件环境下都比较高的加密速度。算法可以分为两部分,一部分是密钥的产生部分,另一部分是数据随机化部分。密钥产生部分根据128位的输入密钥,产生128位的扩展密钥。数据随机化部分输入64位的数据进行混合,也就是所谓的加密。

密钥产生

K为输入密钥,K’为扩展密钥,K和K’都是128位,扩展密钥是由函数FI从K,1,… K,8中产生,并存储在K,9,…, K,16中。Ki代表K的一个元素,1≤i≤8,每个的长度为16位;然后Ki被认为作输入到FI,Ki+1作为FI模的密钥。FI模的输出是16位的K,i, 1≤i≤8,K9=K1
K=K1‖K2‖K3‖K4‖K5‖K6‖K7‖K8
for i=1 to 8 do
K,i=FI(Ki,Ki+1)
K,= K,1‖K,2‖K,3‖K,4‖K,5‖K,6‖K,7‖K,8

在这里插入图片描述

数据随机化

MISTY1算法采用了两个S盒,S7和S9。函数FO调用函数FI,而密钥扩展部分也使用函数FI。FI函数采用了稳妥的Feistel结构,它的输入是32位,输出也是32位。其中,S7是一个7×7的S盒,而S9是一个9×9的S盒。这两个S盒都被证明具有较好的阻力线和鉴别攻击能力,可以有效地保护数据安全。函数FL和函数FO是用来混合数据的,其中函数FL采用线性变换,而函数FO则采用非线性变换。这些函数的设计都旨在提高MISTY1算法的安全性和效率。

函数

FI函数将16位输入分为两部分L0和R0

FI的输入为:
X16= L0‖R0
KIij=KIijLKIijR
FI则定义为:
R1=S9[L0](00b‖R0)
L1=R0
R2=S7[L1](truncate(R1))KIijL
R3=S9[L2](00b‖R2)
L3=R2
Y16=L3‖R3

FI函数程序代码:
public int FI(int x,int K
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

互联小助手

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

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

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

打赏作者

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

抵扣说明:

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

余额充值