密码学课程设计报告文档格式.docx
- 文档编号:15938489
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:20
- 大小:147.30KB
密码学课程设计报告文档格式.docx
《密码学课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《密码学课程设计报告文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
3、2人/组
二:
实现原理
IDEA算法是一个分组长度为64比特的分组密码算法,密钥长度为128比特,由8轮迭代操作实现。
每个迭代都由三种函数:
mod(216)加法、mod(216+1)乘法和逐位异或算法组成。
整个算法包括子密钥产生、数据加密过程、数据解密过程三部分。
该算法规定明文和密文块均为64比特,密钥长度为128
比特,加解密相同,只是密钥各异。
1、加密过程:
IDEA总共进行8轮迭代操作,每轮需要6个子密钥,另外还需要4个额外子密钥输出变换,所以总共需要52个子密钥,这52个子密钥都是从128比特密钥中扩展出来的。
输入的明文为8个字符(即64比特),将64比特数据块分成X1,,X2,,X,3,X,4四个子块,每一子块16比特。
这4个子块将作为第一轮迭代的输入,全部共8轮迭代。
在每一轮中,这4个子块相互异或、相加和相乘,且与6个16比特子密钥相异或、相加和相乘。
最后在输出变换中4个子块与4个子密钥进行运算。
见图一。
2、解密过程
和加密密钥一样,解密密钥也需要扩展,不同的是解密密钥是由加密密钥加法逆或乘法逆构成的,且两者一一对应。
IDEA算法的解密过程和加密过程一样,只是加密用加密密钥EK,解密用的是解密密钥DK。
输入的密文同样为8个字符(即64比特),将64比特数据块分成Y1,,Y2,,Y,3,Y,4四个子块,每一子块16比特。
见图二。
(IDEA加密算法轮结构)
三:
源代码:
/*c-programofblockcipherIDEA*/
#include<
windows.h>
stdio.h>
process.h>
string.h>
stdlib.h>
conio.h>
#definemaxim65537L
#definefuyi65536L
#defineone65535L
#defineround8
#definebuf_size8
#defineSIZE8
#defineswap_byte(x,y)t=*(x);
*(x)=*(y);
*(y)=t
intWINAPIDLLEntryPoint(HINSTANCEhDLL,DWORDdwReason,LPVOIDReserved);
intdeideaFile(char*,char*,unsignedchar*);
intenideaFile(char*,char*,unsignedchar*);
voiddeideaString(unsignedchar*keysession,unsignedchar*inputdata,unsignedlonginlength,unsignedchar*outdata,unsignedlong*outlength);
voidenideaString(unsignedchar*keysession,unsignedchar*inputdata,unsignedlonginlength,unsignedchar*outdata,unsignedlong*outlength);
/*encryptionalgorithm*/
voidcip(unsigned[],unsigned[],unsignedZ[7][10]);
/*generateencryptionsubkeysZ'
s*/
voidkey(unsigneduskey[8],unsignedintZ[7][10]);
/*computedecryptionsubkeysDK'
voidde_key(unsignedintZ[7][10],unsignedintDK[7][10]);
/*computeinverseofxinbyEuclideangcdalg.*/
unsignedintinv(unsignedintxin);
/*multiplicationusingtheLow-Highalgorithm*/
unsignedintmul(unsignedinta,unsignedintb);
voidproduce_plaintext(unsignedchartext[],unsignedintXX[]);
voidproduce_miwen(unsignedchartext[8],unsignedintYY[4]);
typedefstructrc4_key
{
unsignedcharstate[256];
unsignedcharx;
unsignedchary;
}rc4_key;
voidprepare_key(unsignedcharkey_data_ptrp[256],intkey_data_len,rc4_key*key)
unsignedchart;
unsignedcharindex1;
unsignedcharindex2;
unsignedcharkey_data_ptr[256];
intcounter;
inti;
/*strcpy(key_data_ptr,key_data_ptrp);
*/
for(i=0;
i<
key_data_len;
i++)
/*state[i]=key.state[i];
key_data_ptr[i]=key_data_ptrp[i];
256;
state[i]=key->
state[i];
for(counter=0;
counter<
256;
counter++)
state[counter]=(char)counter;
key->
x=0;
y=0;
index1=0;
index2=0;
{
index2=(key_data_ptr[index1]+state[counter]+index2)%256;
swap_byte(state+counter,state+index2);
index1=(index1+1)%key_data_len;
}
state[i]=state[i];
}
voidrc4(unsignedcharbuffer_ptr[8],intbuffer_len,rc4_key*key)
unsignedchart;
unsignedcharxorIndex;
shortcounter;
x=key->
x;
y=key->
y;
state[i]=key->
buffer_len;
x=(x+1)%256;
y=(state[x]+y)%256;
swap_byte(state+x,state+y);
xorIndex=(state[x]+state[y])%256;
buffer_ptr[counter]^=state[xorIndex];
key->
state[i]=state[i];
x=x;
y=y;
voidRC4RC4(unsignedcharlSourcestr[],unsignedchar*lSessionkey)
unsignedcharseed[256];
unsignedchardata[256];
unsignedcharbuf[buf_size];
unsignedchardigit[5];
longhex;
intrd;
intn;
rc4_keykey;
intabcd;
abcd=strlen((char*)lSessionkey);
strcpy((char*)data,(char*)lSessionkey);
data[abcd]='
\0'
;
n=strlen((char*)data);
if(n&
1)
{
strcat((char*)data,"
0"
);
n++;
}
n/=2;
strcpy((char*)digit,"
AA"
for(i=0;
n;
digit[2]=data[i*2];
digit[3]=data[i*2+1];
hex=0xaa10;
seed[i]=(char)hex;
prepare_key(seed,n,&
key);
rd=strlen((char*)lSourcestr);
strcpy((char*)buf,(char*)lSourcestr);
buf[rd]='
rd=strlen((char*)buf);
rc4(buf,rd,&
strcpy((char*)lSourcestr,(char*)buf);
return;
voidproduce_plaintext(unsignedchartext[8],unsignedintXX[4])
4;
XX[i]=text[2*i];
XX[i]=(XX[i]<
<
8)+text[2*i+1];
voidproduce_miwen(unsignedchartext[8],unsignedintYY[4])
YY[i]=(unsignedint)text[2*i];
YY[i]=(YY[i]<
/*encryptionalgorithm*/
voidcip(unsignedintin[4],unsignedintout[4],unsignedintZ[7][10])
unsignedintr,x1,x2,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 密码学 课程设计 报告