欢迎来到第一文库网! | 帮助中心 第一文库网-每个人都是第一
第一文库网
全部分类
  • 研究报告>
  • 学术论文>
  • 全科教育>
  • 应用文档>
  • 行业资料>
  • 企业管理>
  • 技术资料>
  • 生活休闲>
  • ImageVerifierCode 换一换
    首页 第一文库网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Diffie-Hellman密钥交换综合实验报告.docx

    • 资源ID:88364       资源大小:16.75KB        全文页数:10页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    扫码关注公众号登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Diffie-Hellman密钥交换综合实验报告.docx

    (网络安全方案设计基础)实验报告#代码可运行时间:2021年 5月 12日 1-2节地点:软件实验室姓名班级学号指导教师实险成绩小李物联网18-1180*实验名称Diffie-Hellman密钥交换算法实验目的1、了解和掌握Diffie-Hellman算法原理及过程;2、通过密钥交换算法实现对称加解密密钥的保密传输;3、能够编写代码实现Diffie-Hellman算法,并实现数据保密传输。实验内容1、编写Diffie-Hellman程序,协商出用于收、发双方的加、解密密钥K;2、模拟发送端A,用协商出的密钥K,通过对称加密算法(具体算法不限)将文本文件加密;模拟接收端B,用协商出的密钥K,对接收到的密文解密。实验过程#include <stdio.h>#include <math.h>/*函数声明*/void InitSbox(unsigned char sbox);void KeyExpansion(unsigned char key, char *k, int len);void UpsetSbox(unsigned char sboxfL unsigned char keyfl);void DataProcess(unsigned char sbox, FILE *fpl, FILE *fp2);void DataEncrypt(char *k, unsigned char *key, unsigned char *sbox, FILE *fpl, FILE *void DataDecrypt(char *kl, unsigned char *key, unsigned char *sbox, FILE *fpl, FILEint wrile_file(char name,char dataJnt size);int read_file(char namefLchar data,int size);int usera();int userb();int Xa = 3, Xb = 5, Ya, Yb;/*初始化S盒*/void InitSbox(unsigned char sboxf)fp2);*fp2);int i;for( i = 0; i < 256; i+) sboxfi = i;)/*密钥填充256数组*/void KeyExpansion(unsigned char key, char *k, int len)int i;if(len <= 256) for( i = 0; i < 256; i+) keyi = ki % lenj;)if(len> 256)(for( i = 0; i < 256; i+) keyfi = ki;)/*打乱S盒*/void UpsetSbox(unsigned char sboxfL unsigned char keyl)int j = 0,i;unsigned char temp;int n;for( i = 0; i < 256; i+)n = j + (int)sboxi + (int)keyfi;j = n% 256;temp = sboxij;sboxi = sboxj;sboxfj = temp;)/*加解密数据*/void DataProcess(unsigned char sbox, FILE *fpl, FILE *fp2)/0 加密,1 解密int i=0, j=O,size=O;int temp2,templet;char k,cipherchar,data_Stream 100J= 0x00;unsigned char temp;char ch = fgetc(fpl);while(ch != EOF)printf(”c”,ch);i = (i+ 1)%256;temp2 = j + (int)sboxi;j = temp2 % 256;temp = sboxfi;sboxi = sboxj;sbox|jj = temp;tempi = (int)sboxi + (int)sboxj;t = tempi % 256;data_Streamfsize+= k = sboxft;cipherchar = ch A k;fputc(cipherchar, fp2);ch = fgetc(fpl);)write.f le(”Stream. txt",data_Stream,size);)/*加密总函数*/void DataEncrypt(unsigned char *k, unsigned char *key, unsigned char *sbox, FILE *fpl, FILE*fp2) int len = strlen(k);KeyExpansion(key, k, len);InitSbox(sbox);UpsetSbox(sbox, key);printf(”n 明文为:");DataProcess(sbox, fpl, fp2);fclose(fpl);fclose(fp2);printf(”n 加密成功,加密内容存于 “Ciphertext.txt” 中nn”);)/*解密总函数*/void DataDecrypt(unsigned char *kl, unsigned char *key, unsigned char *sbox, FILE *fpl,FILE *fp2) int len = strlen(kl);KeyExpansion(key, kl, len);InitSbox(sbox);UpsetSbox(sbox, key);printf("n密文为:为DataProcess(sbox, fpl, fp2);fclose(fpl);fclose(fp2);printf("n 解密成功,解密内容存于 "Plaintext.txt” 中!nn");)/*文件的写操作 */int write_file(char name,char data,int size)FILE *file=fopen(name,"ab+");if(file=NULL)return 0;fwrite(data,sizeof(char),size,file);/写入一个数组rewind(file); 移动指针到开头fclose(file);return 1;/*文件的读操作*/int read_file(unsigned char name,char dataJ,int size)FILE *file=fopen(name,"rb4-u);if(file=NULL)return 0;rewind(file); 移动指针到开头fread(data,sizeof(char),size,file); 读出一个数组fclose(file);return 1;int main(int argc, const char * argv) int q = 11, alpha = 2;unsigned char k 1 res ;unsigned char k2res ;/*rC4 变量*/unsigned char key 125J= 0x00 ,key225= 0x00;unsigned char key256 = 0x00);unsigned char sbox256 = 0x00;FILE*fpl,*fp2;int flag = l,i;/*A 端操作*/printf(" * A 立帚操作 *printf("q=l 1, a=2, Xa=3 n");/计算YaYa = pow(alpha,Xa);Ya = Ya % q;printf("计算得出:Ya=(a)人Xa mod q = %dn'Ya);printf("把 Ya 发送给 B 端.n");/*B 端操作*/pr* * *b M * *n") printf(nq=ll,a=2, Xb=5 nu);计算YbYb = pow(alpha,Xb);Yb = Yb % q;printf("计算得出:Yb二(aXb mod q = %dn'Yb);printf("把 Yb 发送给 A 端.nn");/*Ab &带l|攵至ij数据后解密*/printf(*AB 端计算秘钥结果*n”);/把Yb给程序A并解出秘钥k 1 res = usera(alpha,q);把Ya给程序B并解出秘钥k2res = userb(alpha,q);key l0=k Ires;key20=k2res;printf(HnA程序收到Yb后计算,得到秘钥Ka:%dH,klres);printf(MnB程序收到Ya后计算,得到秘钥Kb:%dn",klres);/*rC4 加密*/* * * 力口 窖 */printf("n*A 端进彳亍 RC4 加密*n")fpl = fopen("Source.txt";T');if(fpl = NULL)printf("打开源文件失败!n");getchar();exit(O);)fp2 = fopen(,Ciphertext.txt",'wH);if(fp2 = NULL)printf("打开加密后文件失败!n");getchar();exit(O);printf("利用Ka加密进行加密)DataEncrypt(key 1, key, sbox, fpl, fp2);/* 解密 */printf(*B 端进行 RC4 解密*n')fpl = fopen(nCiphertext.txt",nr");if(fpl =NULL)printf("打开加密后文件失败!n");getchar();exit(O);fp2 = fopen(,'Plaintext.txt",

    注意事项

    本文(Diffie-Hellman密钥交换综合实验报告.docx)为本站会员(lao****ou)主动上传,第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第一文库网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 001doc.com网站版权所有   

    经营许可证编号:宁ICP备2022001085号

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



    收起
    展开