用aes加密实现socket通信

用aes加密实现socket通信

ID:1238196

大小:159.00 KB

页数:6页

时间:2017-11-09

用aes加密实现socket通信_第1页
用aes加密实现socket通信_第2页
用aes加密实现socket通信_第3页
用aes加密实现socket通信_第4页
用aes加密实现socket通信_第5页
资源描述:

《用aes加密实现socket通信》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、用AES加密实现Socket通信2.1、设计目的1、熟悉socket通讯原理2、掌握AES加密算法2.2、系统目标实现客户服务器之间用socket进行通信;发送方传输的消息使用AES加密,接收方对消息解密获取明文。2.3、实现步骤2.3.1熟悉socket通讯过程socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所

2、以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。客户端,使用ClientSocket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。2.3.2熟悉AES高级加密算法加密解密过程AES算法是美国标准技术研究所(NIST)于2001年11月正式发布的,它是一种分组加密算法,处理的最小单元是一个分组,即把明文或密文分成固定长度的分组,进而进行加密或解密处理。AES的分组大小

3、为128比特,可以支持的密钥长度有128、192、256三种,分别称为AES-128、AES-192、AES-256,其中又以AES-128应用最广。AES算法定义了加密过程和解密过程,加密过程和解密过程都是一个周期迭代的过程,迭代的次数由密钥长度决定,对于AES-128迭代次数为10。由于采用了迭代过程,而且每次迭代所需要的密钥也不同,AES算法定义了密钥扩展过程,该过程也是一个迭代过程,通过10个周期产生10个不同的密钥供加密和解密使用。在加密和解密过程中128比特的分组被分解成16个字节,并依次从a0到a15命名,这16个字节又映射

4、成一个4x4的字节矩阵。加密和解密过程中每一轮操作都基于这4x4的字节矩阵,每轮的结果又称为状态。数据首先和128比特的原始密钥经过addroundkey运算后再进行10轮运算。10轮运算有字节替换(subbyte)、行移位(shiftrow)、列混合(mixcolumns)和轮密钥混合(addroundkey)组成,其中算法定义最后一轮运算不进行列混合操作。(1)字节替换  字节代换运算是一个可逆的非线性字节代换操作,该运算处理的最小单位是一个字节,也就是4x4字节矩阵中的一个元素。对字节的替换操作可以基于一个代换表(又称S盒)。字节替

5、换表由两个独立的变换组成:有限域GF(28)中字节的乘法逆运算和有限域GF(2)中的仿射变换。(2)行移位  加密中的行移位在状态的每行间进行,具体方法为将每一行进行循环左移位,即最高位字节移动到最低位字节。具体移位的数目与行的序号有关,第零行不进行移位,第一行循环左移一个字节,第二行循环左移两个字节,第三行循环左移三个字节…(3)列混合  列混合主要对状态中的每一列为单位进行处理,每一列看作一个GF(28)下的4位多项式。利用该多项式和c(x)={03}x3+{01}x2+{01}x+{02}进行多项式乘法,乘法结果再进行取模运算,模的

6、值为X4+1。(4)轮密钥混合  轮密钥混合指对密钥中各个字节和相应的轮密钥进行逐位异或,实现数据和密钥的混合。对于加密过程,初始时刻数据和初始密钥进行异或,此后扩展出的轮密钥和状态进行异或操作。算法描述AES加密过程由四个不同的变换组成:Rijnadel(State,CipherKey){//初始化KeyExpansion(CipherKey,ExpandedKey);//生成子密钥AddRoundKey(State,ExpandedKey);//与子密钥位与//前Nr-1轮State=in;for(i=1;i

7、ytes(State);//S-盒ShiftRows(State);//行被移位MixColumns(State);//列被混叠AddRoundKey(State,ExpandedKey);//与子密钥位与}//最后一轮SubBytes(State);ShiftRows(State);AddRoundKeys(State,ExpandedKey);Out=State;}2.3.3、代码实现明白了socket通信过程和AES算法过程后,进行具体实现。开发环境:BorlandC++builder6.0运行模式:客户端和服务器分开设计,由于本次

8、课程设计简单实现通信,所以指定客户端与服务器通信端口为2000.如图是开发界面:服务器侦听:void__fastcallTForm1::serverListenClick(TObject*Se

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。