数据加密标准 DES 算法的实现。
二、实验目的
通过编程实现分组密码算法 DES,对该算法本身有较好的认识,
初步体会 Feistel 结构的特点。
三、实验内容
1)认真阅读课本中 DES 算法,掌握算法的加密、解密过程。
明文分组长 64 比特。有效主密钥长 56 比特,根据密钥生成算
法,由主密钥生成 16 个 48 比特的子密钥。
该算法共 16 轮,每轮使用一个子密钥。
在进行 16 轮加密之前,先对明文做一个初始置换 IP。
每一轮加密的轮
函数 f 为:.
在 16 轮加密之后,对比特串 L16R16 换位为 R16 L16,做逆置
换 IP-1,从而得到密文 C。
2)用 C 语言实现该算法,尽可能的优化算法的实现。
3)在屏幕上输入明文和主密钥,进行加密得到密文并在屏幕上显
示,然后对密文进行解密并在屏幕上显示出结果(明文)
四、实验核心代码
① 输入 8 位密钥通过 ascii 码转换成 64 位主密钥
for(i=0;i<8;i++) //将密钥转化成 64 位二进制数放到一维数组 key 中
{
int a[8]={0,0,0,0,0,0,0,0};
m=InputKey[i];
for(j=0;m!=0;j++)
{
a[j]=m%2;
评论4