随笔分类 -  C#网络高级编程

摘要:网络传递加密数据虽然不对称加密解决了用对称加密传递消息必须传递密钥的问题,但是由于不对称加密无法使用流进行处理,因此与对称加密相比效率较低,不适用于加密大量数据的场合。在实际应用中,一般将两种加密方法配合使用。其基本思想是:用不对称加密算法加密对称加密算法的密钥,用对称加密算法加密实际数据。 具体设计思路可以简单描述为:A和B相互传递加密的数据前,B首先生成一个不对称加密算法使用的公钥/私钥对,假定公钥为publicKey,私钥为privateKey,然后B将公钥publicKey通过网络传递给A;A接收到此公钥后,根据此公钥初始化不对称加密对象,并用此对象加密使用对称加密算法的密钥key.. 阅读全文
posted @ 2012-07-03 08:08 广拓小程序 阅读(4266) 评论(0) 推荐(0)
摘要:不对称加密对称加密的缺点是双方使用相同的密钥和IV进行加密、解密。由于接收方必须知道密钥和IV才能解密数据,因此发送方需要先将密钥和IV传递给接收方。这就有一个问题,如果攻击者截获了密钥和IV,也就等于知道了如何解密数据!如何保证发送方传递给接收方的密钥和IV不被攻击者截获并破译呢?不对称加密也叫公钥加密,这种技术使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。不对称加密产生的主要原因有两个,一是对称加密的密钥分配问题,另一个是由于对数字签名的需求。不对称加密使用一个需要保密的私钥和一个可以对任何人公开的公钥,即使用公钥/私钥对来加密和解密数据。 阅读全文
posted @ 2012-07-03 07:51 广拓小程序 阅读(2271) 评论(0) 推荐(0)
摘要:在.NET库的System.Security.Cryptography命名空间中,包含多种加密数据的类,涉及多种加密算法。加密方法主要分为两大类:对称加密和不对称加密。对称加密私钥算法以块为单位加密数据,一次加密一个数据块。因此对称加密支持数据流,是加密流数据的理想方式。.NET类库使用的私钥算法有RC2、DES、TripleDES和Rijndael。这些算法通过加密将n字节的输入块转换为加密字节的输出块。如果要加密或解密字节序列,必须逐块进行。由于n很小(对于RC2、DES和TripleDES算法,n的值为8字节、16字节或24字节,默认值为16字节;对于Rijndael算法,n的值为32字 阅读全文
posted @ 2012-07-03 07:41 广拓小程序 阅读(6806) 评论(0) 推荐(0)
摘要:POP3邮件服务器通过侦听TCP端口110提供POP3服务。客户端软件读取邮件之前,需要事先与服务器建立TCP连接。连接成功后,POP3服务器会向该客户端发送确认消息。然后客户端根据服务器回送的信息决定下一步的操作。客户端每次向POP3服务器发送命令后,都要等待服务器响应,并处理接收的信息,然后再接着发送下一个命令,如此往复多次,一直持续到连接终止。这个过程经历了三个状态:授权(AUTHORIZATION)状态、操作(TRANSACTION)状态和更新(UPDATE)状态。POP3服务器回送的响应信息由一个状态码和一个可能跟有附加信息的命令组成。所有响应也以回车换行结束(发送命令也是)。状态码 阅读全文
posted @ 2012-06-30 08:23 广拓小程序 阅读(10074) 评论(6) 推荐(4)
摘要:这段时间在看网络高级编程,对于SMTP协议C#进行了很多封装,使我们使用起来相当方便SMTP是英文Simple Mail Transfer Protocol的缩写,意为简单邮件传输协议,默认端口为25在SMTP协议中,电子邮件由三部分组成,信封、首部和正文。1) 信封信封包括发信人的邮件地址和接收人的邮件地址,用两条SMTP命令指明。① MAIL FROM:<发信人的地址>,告诉SMTP服务器发信人的地址。② RCPT TO:<收信人的地址>,告诉SMTP服务器收信人的地址。2) 首部首部中常用命令:① FROM:<姓名><邮件地址>,表明邮件发 阅读全文
posted @ 2012-06-26 21:25 广拓小程序 阅读(7317) 评论(0) 推荐(1)
摘要:广播,就是指同时向子网中的多台计算机发送消息,并且所有子网中的计算机都可以接收到发送方发来的消息。每个广播消息包含一个特殊的IP地址。广播消息地址分为两种类型:本地广播和全球广播。通过本地广播向子网中的所有计算机发送广播消息时,其他网络不会受到本地广播的影响。我们知道IP地址分为两部分,网络地址和主机地址,标准网络地址部分组成了本地网络地址的第一部分,字节地址中全部为1的部分用于主机地址部分(即十进制的255)。例如,对于B类网络192.168.0.0,使用子网掩码255.255.0.0,(此IP地址的网络号为192.168,主机号为0.0,子网掩码全为1的对应的IP地址的网络号)则本地广播地 阅读全文
posted @ 2012-06-24 22:59 广拓小程序 阅读(5494) 评论(0) 推荐(1)
摘要:异步TCP和同步TCP类似,和其他所有的异步调用一样:几个基本的异步调用.AsyncCallback委托AsyncCallback委托用于引用异步操作完成时调用的回调方法。在异步操作方式下,由于程序可以在启动异步操作后继续执行其他代码,因此必须有一种机制,以保证该异步操作完成时能及时通知调用者。这种机制可以通过AsyncCallback委托实现。 异步操作的每一个方法都有一个Begin…方法和End…方法,例如BeginAcceptTcpClient和EndAcceptTcpClient。程序调用Begin…方法时,系统会自动在线程池中创建对应的线程进行异步操作,从而保证调用方和被调用方同时执 阅读全文
posted @ 2012-06-20 22:24 广拓小程序 阅读(9804) 评论(3) 推荐(2)
摘要:线程同步这一方面,因为相对来说用得比较少,每次做多线程相关的问题是都必须重新温习,今天在看异步TCP时,又重新梳理了下。多线程同步大概有两类:一类是信号量,另一类是互斥,排他1.信号量:实例代码如:class Program { private int n1, n2, n3; EventWaitHandle myEventWaitHandle = new EventWaitHandle(false, EventResetMode.ManualReset); //EventResetMode中有手动和自动设置信号量; //false没默认没有信号,true表示默认有... 阅读全文
posted @ 2012-06-17 20:56 广拓小程序 阅读(2074) 评论(1) 推荐(1)
摘要:1. TcpClient类 TcpClient类归类在System.Net命名空间下。利用TcpClient类提供的方法,可以通过网络进行连接、发送和接收网络数据流。该类的构造函数有四种重载形式: 1) TcpClient() 该构造函数创建一个默认的TcpClient对象,该对象自动选择客户端尚未使用的IP地址和端口号。创建该对象后,即可用Connect方法与服务器端进行连接。例如:TcpClient tcpClient=new TcpClient();tcpClient.Connect("www.abcd.com", 51888); 2) TcpClient(Addre 阅读全文
posted @ 2012-06-17 15:46 广拓小程序 阅读(2395) 评论(1) 推荐(1)