




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西华大学计算机系上机实践报告课程名称:密码学指导教师:纪四维上机实践名称:对称密码算法上机实践编号:a01年级:07级上机实践成绩:姓名:范存勇学 号 :上机实践日期:2009-11-10312007080605104组号:上机实践时间14: 00-17: 20一、目的通过用des算法对实际数据进行加密和解密来深刻了解des的运行原理。二、内容与设计思想a) 算法分析。对加密解密时主要用到的五个函数进行分析。i. 密钥生成函数ii. 加密函数iii. 解密函数iv. 测试函数v. 密钥长度检验函数b) 使用实例分析。i. 对一个文件进行加密解密,提交程序代码和执行结果。ii. 加密时,将输入(
2、如64比特分组)改变一位,比较输出的变化,并说 明原因。三、使用环境运行windows 或linux 操作系统的 pc机,具有gcc(linux)、vc(windows)等c语言编译环境四、核心代码及调试过程#ifndef crypt_h_ #define crypt_h_ #include <assert.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h>#include <ctype.h>#include <
3、;limits.h>#ifdef _cplusplus extern "c" #endif/* version */#define crypt 0x0096#define scrypt ”0.96”/* error codes will be expanded in future releases */ enum crypt_ok=0,/* result ok */crypt_invalid_keysize, /* invalid key size given */ crypt_invalid_rounds, /* invalid number of rounds *
4、/ crypt_fail_testvector,产 algorithm failed test vectors */;#define des/* use small code where possible */#define small_code/* enable self-test test vector checking */#define ltc.test/* type of argument checking, 0=default, 1 =fatal and 2=none */#define argtype 0/* chl-01-1 */* controls endianess and
5、 size of registers leave uncommented to get platform neutral slower code */* detect x86-32 machines somewhat */#ifdefined(intel_cc) | (defined(_msc_ver) && defined(win32) | (defined(_gnuc_) && (defined(_djgpp_) | defined(_cygwin_) | defined(_mingw32_) | defined(_i386)#define endian_l
6、ittle#define endian_32bitword#endif/* detects mips r5900 processors (ps2) */#if (defined(_r5900) | defined(r5900) | defined(_r5900_) && (defined(_mips) | defined(_mips_) | defined(mips)#define endian_little#define endian_64bitword#endif怦 #define endian_little 犁严 #define endian_big */* #defin
7、e endian_32bitword */* #define endian_64bitword */#if (defined(endian_big) | defined(endian_little)&& !(defined(endian_32bitword) | defined(endian_64bitword) #error you must specify a word size as well as endianess#endif#讦!(defined(endian_big) | defined(endian_little) #define endian.neutral#
8、endif/* fix for msvc .evil! */#ifdef_msc_ver#define const64(n) n # ui64 typedef unsigned _int64 ulong64;#else#define const64(n) n # ull typedef unsigned long long ulong64;#endif/* this is the "32-bit at least" data type* re-define it to suit your platform but it must be at least 32-bits */
9、typedef unsigned long ulong32;/* - helper macros*/#ifdef endian.neutral#define store32l(x, y) (y)3 = (unsigned char)(x)»24)&255); (y)2j = (unsigned char)(x)»16)&255);(y)l = (unsigned char)(x)»8)&255); (y)0 = (unsigned char)(x)&255); #define load32l(x, y) x = (unsigned
10、long)(y)3 & 255)«24) | (unsigned long)(y)2 & 255)«16) | (unsigned long)(y)l & 255)«8)| (unsigned long)(y)|0| & 255); #define store32h(x, y) (y)|0| = (unsigned char)(x)»24)&255); (y)| 1 = (unsigned char)(x)»16)&255);(y)2 = (unsigned char)(x)»8)&am
11、p;255); (y)3 = (unsigned char)(x)&255); #define load32h(x, y) x = (unsigned long)(y)|0 & 255)«24) | (unsigned long)(y)l & 255)«16) | (unsigned long)(y)2 & 255)«8)| (unsigned long)(y)3 & 255); #enchf/* endian_neutral */#ifdef endian_little#define store32h(x, y) (y)0
12、 = (unsigned char)(x)»24)&255); (y)l = (unsigned char)(x)»16)&255);(y)2 = (unsigned char)(x)»8)&255); (y)3 = (unsigned char)(x)&255); #define load32h(x, y) x = (unsigned long)(y)0 & 255)«24) | (unsigned long)(y)l & 255)«16) | (unsigned long)(y)2 &
13、 255)«8)| (unsigned long)(y)3 & 255); #ifdef endian_32bitword#define store32l(x, y) unsigned long _t = (x); memcpy(y, &_t, 4); #define load32l(x, y) memcpy(&(x), y, 4);#else /* 64-bit words then */#define store32l(x, y) unsigned long _t = (x); memcpy(y, &_t, 4); #define load32l(
14、x, y) memcpy(&(x), y, 4); x &二 oxffffffff; #endif/* endian_64bitword */#endif/* endian_little */#ifdefendian_big#define store32l(x, y) (y)oj = (unsigned char)(x)»24)&255); (y)l = (unsigned char)(x)»16)&255);(y)2 = (unsigned char)(x)»8)&255); (y)3 = (unsigned char)(
15、x)&255); #define load32l(x, y) x = (unsigned long)(y)0 & 255)«24) | (unsigned long)(y)l & 255)«16) | (unsigned long)(y)2 & 255)«8)| (unsigned long)(y)3 & 255); #ifdef endian_32bitword#define store32h(x, y) unsigned long _t = (x); memcpy(y, &_t, 4); #define load
16、32h(x, y)memcpy(&(x), y, 4);#else /* 64-bit words then */#define store32h(x, y) unsigned long _t = (x); memcpy(y, &_t, 4); #define load32h(x, y) memcpy(&(x), y, 4); x &二 oxffffffff; #endif/* endian.64bitword */#endif/* endian_big */#define bswap(x) (x»24)&0x000000fful) | (x&
17、#171;24)&0xff000000ul)| (x»8)&0x0000ff00ul)| (x«8)&0x00ff0000ul)#ifdef_msc_ver#pragma intrinsic(rotl)#define ror(x,n) _lrotr(x,n)#define rol(x,n) _lrotl(x,n)#elif defined(_gnuc_) && defined(_i386_) && !defined(intel_cc)static inline unsigned long rol(unsigned lo
18、ng word, int i)_asm_(hroll %cl,%on:n=rn (word):”0” (word),ncn (i);return word;static inline unsigned long ror(unsigned long word, int i)_asm_(nrorl %cl,%0”:'-rh (word):”0” (word),nch (i);return word;#else/* rotates the hard way */#define rol(x, y) (unsigned long)(x)«(unsigned long)(y)&3
19、1) | (unsigned long)(x)&oxfffffffful)»(unsigned long)(32-(y)&31) & oxfffffffful)#define ror(x, y) (unsigned long)(x)&oxfffffffful)»(unsigned long)(y)&31) | (unsigned long)(x)«(unsigned long)(32-(y)&31) & oxfffffffful)#endif/* extract a byte portably */#ifde
20、f_msc_ver#define byte(x, n) (unsigned char)(x) » (8 * (n)#else#define byte(x, n) (x) » (8 * (n) & 255)#endiftypedef struct des_key ulong32 ek32, dk32;symmetric_key;extern int des_setup(const unsigned char *key, int keylen, int num_rounds? symmetric_key *skey);extern void des_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key * key); extern void des_ecb_decrypt(const unsigned char un
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 木质乐器制作工艺传承考核试卷
- 票务代理行程规划与咨询考核试卷
- 电池制造过程中的市场趋势分析考核试卷
- 木材的天然防腐和抗菌性能考核试卷
- 植物油加工过程中的副产物利用策略考核试卷
- 电视接收设备的智能广告投放系统考核试卷
- 泵的耐高温材料与涂层技术考核试卷
- 有机化学原料的可持续采购策略考核试卷
- 厦门城市职业学院《医学成像原理与图像处理》2023-2024学年第二学期期末试卷
- 萍乡卫生职业学院《文化产业项目策划》2023-2024学年第二学期期末试卷
- 初一泛读黑布林 《霍利的新朋友》
- 粉笔国考行测模考大赛第十季
- 老年综合评估和老年综合征PPT通用通用课件
- 超星尔雅学习通《人力资源招聘与选拔》章节测试含答案
- 路面级配砂砾石垫层施工总结报告
- 主提升机司机培训课件
- 变压器容量计算表
- 连续油管作业技术(共122页).ppt
- 互联网大学生创新创业大赛培训
- 3号钢筋加工场桁吊安装方案
- 部编版(统编)六年级语文下册文学常识及文化常识(共4页)
评论
0/150
提交评论