# confidential communication **Repository Path**: Nicole666/confidential-communication ## Basic Information - **Project Name**: confidential communication - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-06 - **Last Updated**: 2023-12-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1. 在运行可执行文件时,**首先打开B_client文件夹**,运行B_client.exe,输入Y选择使用默认端口号;在B_client.exe命令行现“Start,Waiting..........”字符串后,打开A_client文件夹,运行A_client.exe(因为将 B 作为服务器端,需要先启动)。 当两个用户端分别打印“和用户 A/B 成功建立连接!”字符串后,说明建立连接成功。 错误处理:如果 A 用户端打印“和用户 B 成功建立连接!”,但是 B 用户端没有打印“和用户 A 成功建立连接!”字符串,则说明未成功连接,关闭两个用户端程序,按照正确用户端启动顺序重新建立连接。如果仍未成功建立连接,检查程序中的端口号和 IP 地址,程序中默认 A 用户端端口号为:4567,B 用户端端口号为:1333,检查这两个端口号是否被占用,如果被占用,在启动 A 和 B 用户端时选择不使用默认端口号,自己输入重新设定的 A 和 B 用户端端口号,注意 A、B 用户端的目的端口号和源端口号应该相互对应。 2. 发送 RSA 公钥 如果希望重新设置 RSA 密钥,选择功能 4:重置并发送 RSA 公钥。选择这个功能后,会提示选择是否手动输入两个大素数。因为程序生成大素数的速度较慢(生成一个大素数约需要5min-10min),所以建议使用给出的 BigPrime.txt 文档中已经提前生成好的 512bit 大素数,如果选择程序生成大素数,程序中的大素数生成函数会生成两个 512bit 的大素数。在设置完大素数后,程序中自带的 RSA 密钥生成函数会自动生成一对 RSA 密钥,并将公钥发送给另一个用户端,私钥存储在自己的用户端。 3. 发送AES密钥 如果希望重新设置 AES 密钥,选择功能 3:重置并发送 AES 密钥。选择这个功能后,会要求输入一个 AES 密钥字符串,输入任意长度字符串都可以,程序会自动截断或补充字符串至 16字节。然后程序会将这个 AES 密钥加密,发送给另一个用户端。 4. 发送消息 如果希望和另一个用户端进行通信,选择功能 1:发送信息。选择这个功能后,输入任意长度的消息字符串。发送端对消息分组加密,并且发送端会打印加密结果;接收端收到消息后,对消息分组解密。 错误处理:如果发送端显示成功发送消息,但是接收端没有打印接收消息。这可能是因为接收端命令行界面卡顿,没有及时将接收到的消息打印出来,选择接收端窗口,输入回车,接收消息就可以打印出来了。 5. 发送文件 如果希望向另一个用户端发送加密文件,选择功能 2:发送文件。选择这个功能后,输入文件路径,如果文件路径正确,发送端会读取文件,进行分组加密,并将加密结果存入固定大小的数据包中发送;接收端接收数据包后,解密数据并写入文件中。 错误处理:如果在发送端发送文件之后,在接收端的目录文件下,接收到一个文件名是乱码的文件,可能是输出文件过程中,没有找到生成的目标文件,需要手动将文件重命名,然后正常打开即可。