# CourseProject_Cryptography **Repository Path**: unislab-seu/CourseProject_Cryptography ## Basic Information - **Project Name**: CourseProject_Cryptography - **Description**: 本项目实现了混合加密算法。混合加密算法结合了对称加密算法和非对称加密算法的优点,既能保证数据的安全性,又能提高加密效率。 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2023-03-21 - **Last Updated**: 2024-03-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: Cpp, Cryptography, digital-signature ## README # 介绍 本项目实现了混合加密算法。混合加密算法结合了对称加密算法和非对称加密算法的优点,既能保证数据的安全性,又能提高加密效率。 在这个过程中,A首先使用HASH函数对原始消息进行计算,得到一个哈希值。然后使用自己的私钥对哈希值进行加密,生成一个数字签名。接着将数字签名与原始数据拼接在一起,再使用对称密钥进行加密。最后将加密后的内容拼接上用B公钥加密后的对称秘钥,发送给B。 这样,B收到数据后,可以使用自己的私钥解密对称秘钥,然后使用对称秘钥解密数据。解密后的数据包括原始消息和数字签名。B可以使用A的公钥对数字签名进行解密,得到原始消息的哈希值。然后与接收到的消息计算出的哈希值进行比较,以验证消息的完整性和A的身份。 ## 数字签名介绍 数字签名是一种用来验证消息完整性(integrity)和身份认证的技术(不可抵赖性,non-repudiation)。它通过使用发送方的私钥对消息的哈希值进行加密,生成一个数字签名。接收方可以使用发送方的公钥对数字签名进行解密,得到原始消息的哈希值,然后与接收到的消息计算出的哈希值进行比较,以验证消息的完整性和发送方的身份。 ## 项目的工作流程图如下: ![image](https://user-images.githubusercontent.com/87640208/197187801-e0b5c567-7baa-4f41-a26b-8fe561f2d0ed.png) ## 说明: 1、𝑀 表示明文,𝐻 表示 Hash 函数,𝐸 表示加密算法,𝐷表示解密算法,𝑅𝐾_𝐴表示发送方 A 的私钥,𝑈𝐾_𝐴 表示发送方 A 的公钥,𝑅𝐾_𝐵表示发送方 B 的私钥,𝑈𝐾_𝐵表示发送方 B 的公钥,|| 表示组合。 2、阴影部分表示加密后的结果。 ## 要求: 1、对称加密算法包含 DES 和 AES,在程序中可选; 密钥可选或根据种子产生; 2、Hash 算法包含 SHA 和 MD5,在程序中可选; 3、非对称加密算法 RSA,程序中能够产生不同的私钥和公钥对;密钥长度不得小于 200 位; 4、既可以实现对字符串签名和加密,也可实现对文件签名和加密; 5、图示过程在一个程序中完成; 6、采用 visual studio2012 平台开发; 7、具有有可视化界面。 # Release版本已经发布 ## 使用说明 1、点击初始化非对称密钥; 2、填写字符用或选择文件并输入密钥,点击加密进行特定签名和特定加密; 3、选择传送内容的格式并点击传送; 4、点击解密查看加密字符串或文件,校验是是否被篡改; Tip:目前只支持txt文件格式的签名与加、解密! ### 如图为程序执行界面: ![image](https://user-images.githubusercontent.com/87640208/197196279-6766b688-15c2-4688-ab67-96c456e3eb20.png)