资源描述:
《大学密码学实验报告(含代码)试验2对称密码算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、西华大学计算机系上机实践报告课程名称:密码学指导教师:纪四维上机实践名称:对称密码算法上机实践编号:A01年级:07级上机实践成绩:姓名:范存勇学号:上机实践日期:2009-11-10312007080605104组号:上机实践时间14:00-17:20一、目的通过用DES算法对实际数据进行加密和解密来深刻了解DES的运行原理。二、内容与设计思想a)算法分析。对加密解密时主要用到的五个函数进行分析。i.密钥生成函数ii.加密函数iii.解密函数iv.测试函数v.密钥长度检验函数b)使用实例分析。i.对一个文件进行加密解密,提交程序代码和执行结果。i
2、i.加密时,将输入(如64比特分组)改变一位,比较输出的变化,并说明原因。三、使用环境运行Windows或Linux操作系统的PC机,具有GCC(Linux)、VC(Windows)等C语言编译环境四、核心代码及调试过程#ifndefCRYPT_H_#defineCRYPT_H_#include#include#include#include#include#include#include#ifdef_cplusplu
3、sextern"C"{#endif/*version*/#defineCRYPT0x0096#defineSCRYPT”0.96”/*errorcodes[willbeexpandedinfuturereleases]*/enum{CRYPT_OK=0,/*ResultOK*/CRYPT_INVALID_KEYSIZE,/*Invalidkeysizegiven*/CRYPT_INVALID_ROUNDS,/*Invalidnumberofrounds*/CRYPT_FAIL_TESTVECTOR,产Algorithmfailedtestvecto
4、rs*/};#defineDES/*Usesmallcodewherepossible*/#defineSMALL_CODE/*Enableself-testtestvectorchecking*/#defineLTC.TEST/*typeofargumentchecking,0=default,1=fataland2=none*/#defineARGTYPE0/*chl-01-1*//*Controlsendianessandsizeofregisters・Leaveuncommentedtogetplatformneutral[slower]c
5、ode*//*detectx86-32machinessomewhat*/#ifdefined(INTEL_CC)
6、
7、(defined(_MSC_VER)&&defined(WIN32))
8、
9、(defined(_GNUC_)&&(defined(_DJGPP_)
10、
11、defined(_CYGWIN_)
12、
13、defined(_MINGW32_)
14、
15、defined(_i386—)))#defineENDIAN_LITTLE#defineENDIAN_32BITWORD#endif/*detectsMIPSR5900processors(PS2)*/#if(
16、defined(_R5900)
17、
18、defined(R5900)
19、
20、defined(_R5900_))&&(defined(_mips)
21、
22、defined(_mips_)
23、
24、defined(mips))#defineENDIAN_LITTLE#defineENDIAN_64BITWORD#endif怦#defineENDIAN_LITTLE犁严#defineENDIAN_BIG*//*#defineENDIAN_32BITWORD*//*#defineENDIAN_64BITWORD*/#if(defined(ENDIAN_BIG)
25、
26、defined
27、(ENDIAN_LITTLE))&&!(defined(ENDIAN_32BITWORD)
28、
29、defined(ENDIAN_64BITWORD))#errorYoumustspecifyawordsizeaswellasendianess#endif#讦!(defined(ENDIAN_BIG)
30、
31、defined(ENDIAN_LITTLE))#defineENDIAN.NEUTRAL#endif/*fixforMSVC...evil!*/#ifdef_MSC_VER#defineCONST64(n)n##ui64typedefunsigned_i
32、nt64ulong64;#else#defineCONST64(n)n##ULLtypedefunsignedlonglo