计算机安全通讯技术

1.     实验目的

²  熟悉安全算法在聊天程序中的作用与实现

²  调试安全算法的动态链接库实现,聊天客户及服务器端的实现

²  设计安全算法在聊天过程中的加密以及验证过程,实现加密通信和通信内容的数字验证

2.     实验环境

程序设计语言:C++ 0x

程序开发环境:Windows 732bit + Microsoft Visual C++ 2010 + Qt 4.7

安全算法:RSA、DES、SHA1

3.     实验内容

主要流程:

                                                                      计算机安全通讯技术_第1张图片

图1 Sever和Client加密通信过程

主要方法:

1)     通信机制主要采用Qt中的TCP/IP通信机制,建立服务器端和客户端,同时,服务器采用监听的机制,对网络进行监听,以获得客户端的连接;客户端利用不同的用户名与服务器端建立连接,登陆服务器端

[cpp]  view plain copy
  1. 1.  void CryptClient::processPendingDatagrams()//监听函数    
  2. 2.  {    
  3. 3.      QByteArray datagram;    
  4. 4.      do {    
  5. 5.          datagram.resize(CudpSocketRec.pendingDatagramSize());    
  6. 6.          CudpSocketRec.readDatagram(datagram.data(), datagram.size());    
  7. 7.      } while(CudpSocketRec.hasPendingDatagrams());    
  8. 8.      QString recdata;    
  9. 9.      QDataStream in(&datagram, QIODevice::ReadOnly);    
  10. 10.     in.setVersion(QDataStream::Qt_4_7);    
  11. 11.     in >>rsa_pubkey_encrypt_deskey>>des_en_result>>rsa_pubkey_encrypt_sha1digest;    
  12. 12.     Decrypt_DES_EncryptedText();    
  13. 13. }    
  14. 14. void CryptClient::sendDatagram(QString sendData1, QString sendData2)//数据发送函数    
  15. 15. {    
  16. 16.     QByteArray datagram;    
  17. 17.     QDataStream out(&datagram, QIODevice::WriteOnly);    
  18. 18.     out.setVersion(QDataStream::Qt_4_7);    
  19. 19.     out<<sendData1<<sendData2<<des_en_result;    
  20. 20.     CudpSocketSend.writeDatagram(datagram, QHostAddress::LocalHost, 5824);    
  21. 21. }    

通信过程如图1所示,其主要流程如下:

①   由Client端产生RSA密钥,包括公钥和私钥,将公钥发送到Sever端;

②   收到RSA公钥的Sever端利用公钥加密AES的密钥(为了程序的简化,固化在程序中)发送到Client端;

③   收到加密后的DES密钥的Client端利用自己的RSA私钥将AES密钥解密出来,这样双方便可以进行基于DES加密的密文通信

④   利用SHA1算法对通信的明文产生验证消息,将验证消息经过RSA加密之后,双发互相发送,以验证加密密文在传送过程中未被破坏。

其中,RSA、DES、SHA1三个算法已经被封装成了动态链接库(DLL)的形式,各个算法的程序可实现都有各自的说明文档,如有需要敬请查阅。说明文档中由于是html格式的,打开的时候请打开index.htm。

你可能感兴趣的:(计算机通讯)