用 AES加密实现 Socket通信 2.1、设计目的 1、熟悉 socket通讯原理 2、掌握 AES加密算法 2.2、系统目标 实现客户服务器之间用 socket进行通信;发送方传输的消息使用 AES加密,接收方对消息解密获取明文。 2.3、实现步骤 2.3.1熟悉 socket通讯过程 socket通常也称作"套接字",用于描述 IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。服务器,使用 ServerSocket监听指定的端口,端口可以随意指定(由于 1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于 1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。客户端,使用 ClientSocket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭 Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个 1024以上的端口。 2.3.2熟悉 AES高级加密算法加密解密过程 AES算法是美国标准技术研究所(NIST)于 2001年11月正式发布的,它是一种分组加密算法,处理的最小单元是一个分组,即把明文或密文分成固定长度的分组,进而进行加密或解密处理。AES的分组大小为128比特,可以支持的密钥长度有128、192、256三种,分别称为AES-128、AES-192、AES-256,其中又以 AES-128应用最广。 AES算法定义了加密过程和解密过程,加密过程和解密过程都是一个周期迭代的过程,迭代的次数由密钥长度决定,对于 AES-128迭代次数为10。由于采用了迭代过程,而且每次迭代所需要的密钥也不同,AES算法定义了密钥扩展过程,该过程也是一个迭代过程,通过 10个周期产生 10个不同的密钥供加密和解密使用。在加密和解密过程中 128比特的分组被分解成 16个字节,并依次从a0到a15命名,这16个字节又映射成一个 4x4的字节矩阵。加密和解密过程中每一轮操作都基于这4x4的字节矩阵,每轮的结果又称为状态。 数据首先和 128比特的原始密钥经过 addroundkey运算后再进行 10轮运算。10轮运算有字节替换(subbyte)、行移位(shiftrow)、列混合(mixcolumns)和轮密钥混合(addroundkey)组成,其中算法定义最后一轮运算不进行列混合操作。 (1) 字节替换 字节代换运算是一个可逆的非线性字节代换操作,该运算处理的最小单位是一个字节,也就是 4x4字节矩阵中的一个元素。对字节的替换操作可以基于一个代换表(又称 S盒)。字节替换表...