ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:132.97KB ,
资源ID:21106334      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21106334.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(互联网高级技术文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

互联网高级技术文档格式.docx

1、张启坤文档撰写人: 符豪文档撰写时间:2016年6月29日工作记录情况名称时间是否完成工作情况密钥协商聊天器06-25是查阅资料,程序测试06-27代码编写,调试1 实验目的与任务实验目的:1)两个或多个实体协商,共同建立会话密钥,任何一个参与者均对结果产生影响。2)会话密钥由每个协议参与者分别产生的参数通过一定的计算得出。3)锻炼编程能力,提高编程水平,积累编程经验。4)学会基本的算法思想在网络路由选择的实现。5)能够对局域网内通信的消息进行加密传输,防止他人窃取,还可以进行通信双方的身份认证,实行数字签名过程.实验任务:1) 编写图形界面程序,利用产生密钥算法实现,生成通信的彼此的会话密钥

2、;2) 规划程序界面,进行合理的布局;3) 书写算法代码,并对常规算法进行优化,提高算法的效率和稳定性;4)正确运行程序,上传程序代码,提交实验报告。2 实验环境与设备1)安装Windows操作系统的PC机一台2)Microsoft Visual Studio 20123).net framework 框架4.0.4)office3 实验内容与步骤3.1实验内容与要求实验内容;用编程语言完成下列三个1) 局域网内相互通信2) 保证通信时的可靠性3) 进行密钥协商保证通话的信息安全实验要求: 采用适当的界面处理同处于局域网的所有客户端进行通信,展现通信的全过程,保证通信的可靠性以及准确性。3.2

3、 实现功能1)建立通信的安全连接,输入用户名和密码登录系统,然后对整个局域网内广播;2)显示本组通信的所有人员的信息情况,根据连接的先后时间顺序排序;3)显示本组的所任组员的通信情况,以及信息的展示功能;4)密钥协商功能,并对协商的密钥进行验证是否合法,之后再通信中使用;5)对于异常输入的做法,提出错误报告。3.3 测试用例用C#编程语言编写窗体程序,打开程序如图:客户端服务器点击“分发密钥”,将上图转换到程序中,如下图:让后进行密钥协商,和相互通信。3.4 问题分析密钥协商协议的生成方式:可分为证书型和无证书型。证书型是指在会话密钥的产生过程中,由一个可信的证书中心(CA)给参与密钥协商的各

4、方各分发一个证书,此证书中含有此方的公钥,ID及其他信息。证书型密钥协商协议的优点是提供认证,目前PKI(公钥密码体制)广泛部署,比较成熟,应用面广,且由PKG管理公私钥对有利于统一管理,缺点是计算代价大,需要一个可信的CA,同时证书还需要维护。无证书型是指各方在进行会话密钥的协商过程中不需要证书的参与,这是目前密钥协商协议的主流种类,优点是不需要CA的参与,减少了计算量,尤其是在低耗环境下应用的更多,同时安全性也不比证书型弱。几乎没有明显的缺点,只是设计一个安全的更加低耗的无证书密钥协商方案不是很容易。4 总结在此对这次试验进行总结如下:在试验的过程中,难点就在于对密钥协商的处理,以及节点与

5、节点之间和如何寻找节点之间的可靠通信节点。这就对数据结构和算法有一定的理解,尤其对通信的可靠性和稳定性,还要参考整个通信的全过程情况进行模拟。这也对编程语言有很高的要求。这次实验中主要运用密钥协商算法,尽管可以在网上获取有关该算法的源码,但是在整个编程过程中,还是出现不少的问题,例如;1. 密钥如何生成和分配的问题。2. 寻找路径算法的编写和代码的优化。3. 如何维持程序的稳定性和健壮性。4. 针对输入输出的错误操作,如何提出异常处理。5. 对整个程序的代码精减,增强扩展性。5 参考文献 网络通信 Thomas H.Cormen 机械工业出版社2013.01 数据结构与算法分析(C语言描述)

6、MarkAllenWeiss 机械工业出版社2004.01 C#4.0 严蔚敏编著 清华大学出版社,2002.05 大话C#网络 程杰 清华大学出版社,2011.06C#高级编程(第9版) Christian Nagel 清华大学出版社,2015.016 附录主要代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Wind

7、ows.Forms;using System.Net;using System.Net.Sockets;using System.Threading;namespace GroupCommunication public partial class GroupForm : Form /生成随机数 private Random random; /组播地址 private IPAddress groupbroadcastIP = IPAddress.Parse(224.100.0.1); /端口号 private int PORT = 8001; /UDP监听对象 private UdpClien

8、t UDPListener; /跨线程调用控件枚举定义 private enum ListBoxItemOperation Add, Remove ; /跨线程调用控件委托定义 private delegate void SetListBoxItemCallback(string item,ListBox listBox,ListBoxItemOperation operation); private delegate void SetButtonEnableCallback(bool enable,Button button); /定义委托对象 private SetListBoxItemC

9、allback listBoxItemCallback; private SetButtonEnableCallback buttonEnableCallback; /密钥因子存放字典key:username;value:element; private Dictionary keyElement = new Dictionary hashverifygroup=new Dictionary (); public GroupForm() InitializeComponent(); this.skinEngine1.SkinFile = Application.StartupPath + Sk

10、insWave.ssk; /随机生成用户名 username_llbl.Text = string.Empty; random = new Random(); username_llbl.Text = user + random.Next(1, 10000).ToString() + /username_llbl.Text = 符豪 /委托添加订阅 listBoxItemCallback = new SetListBoxItemCallback(SetListBoxItem); buttonEnableCallback = new SetButtonEnableCallback(SetButt

11、onEnable); / / 接收线程/summary private void ReceiveMessage() UDPListener = new UdpClient(PORT); /必须使用组播地址范围内的地址 UDPListener.JoinMulticastGroup(groupbroadcastIP); UDPListener.Ttl = 50; IPEndPoint remote = null; while (true) try /关闭UDPListener时此句会产生异常 byte bytes = UDPListener.Receive(ref remote);/接收数据 st

12、ring receivestring = Encoding.UTF8.GetString(bytes, 0, bytes.Length); string splitString = receivestring.Split(, switch (splitString0) case Login: /进入群组会议室 SetListBoxItem( string.Format(0进入!, splitString1), message_lbx, ListBoxItemOperation.Add); string userListString = List, + splitString1; for (in

13、t i = 0; i private void SendToMuliCastForUser(string message) UdpClient SENDUdpClient = new UdpClient(); /允许发送和接收广播数据报 SENDUdpClient.EnableBroadcast = true; IPEndPoint iep = new IPEndPoint(groupbroadcastIP, PORT); /将发送内容转换为字节数组 byte bytes = System.Text.Encoding.UTF8.GetBytes(message); /向子网发送信息 SENDU

14、dpClient.Send(bytes, bytes.Length, iep); catch (Exception err) MessageBox.Show(err.Message, 发送失败 finally SENDUdpClient.Close(); / 存储密钥因子usernameelement private void AddKeyElement(string username,int element) if (keyElement.Count = 4) return; if (!keyElement.ContainsKey(username) keyElement.Add(usern

15、ame, element); keyElement.Add(username+00, element); private string GetKey() int keyelement = new int2; int i = 0; foreach (int value in keyElement.Values) keyelementi = value; i+; int temp; for (int j = 0; j 3; j+) for (int k = 0; k keyelementk + 1) /交换数 temp = keyelementk; keyelementk = keyelement

16、k + 1; keyelementk + 1 = temp; return keyelement0.ToString() + keyelement1.ToString(); / 验证hash后的密钥returns/returns private bool VerifyKeyHsah() string keyhash=DESData.Key_DES.GetHashCode().ToString(); foreach (string value in hashverifygroup.Values) if (keyhash != value) return false; return true; /

17、 跨线程调用的方法itemlistBoxoperation private void SetListBoxItem(string item, ListBox listBox, ListBoxItemOperation operation) if (listBox.InvokeRequired = true) this.Invoke(listBoxItemCallback, item, listBox, operation); /添加 if (operation = ListBoxItemOperation.Add) if (listBox = userlist_lbx) if (listBox

18、.Items.Contains(item) = false) listBox.Items.Add(item); listBox.SelectedIndex = listBox.Items.Count - 1; listBox.ClearSelected(); else if (operation = ListBoxItemOperation.Remove) /移除 listBox.Items.Remove(item); / 跨线程调用按钮属性enablebutton private void SetButtonEnable(bool enable,Button button) if (butt

19、on.InvokeRequired) button.Invoke(buttonEnableCallback,enable,button); button.Enabled = enable; private void login_btn_Click(object sender, EventArgs e) Cursor.Current = Cursors.WaitCursor; Thread myThread = new Thread(new ThreadStart(ReceiveMessage); myThread.Start(); /等待接收线程准备完毕 Thread.Sleep(1000);

20、Login,+username_llbl.Text); SetButtonEnable(false,login_btn); SetButtonEnable(true, exit_btn); SetButtonEnable(true, sendkey_btn); private void sendkey_btn_Click(object sender, EventArgs e) int element = random.Next(1000,9999);KeyElement, + username_llbl.Text+element.ToString(); SetButtonEnable(false, sendkey_btn); private void agreekey_btn_Click(object sender, EventArgs e) DESData.Key_DES = GetKey();已生成密钥! SetButtonEnable(true, keyverify_btn); catch 密钥生成失败! private void keyverify_btn_Click(object sender, EventArgs e)KeyVerify,+username_llbl.Text+

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1