# security_cli_cpp **Repository Path**: jshazsj/security_cli_cpp ## Basic Information - **Project Name**: security_cli_cpp - **Description**: 信息安全导论实验。 C++实现。 实验一 对称加密应用 实验内容:调用编程接口(如OPENSSL)只使用对称算法技术设计一个针对文件的加密、解密工具。 基本要求: 1. 基于口令生成对称密钥,使用对称密钥对任意长度和任意编码的文件进行加密,输出密文文件。 2. 给定以上得出的任意加密文件形式,可以解密文件还原原始文件。 实验二 公钥加密应用 实验内容:调用编程接口(如OPENSSL)使用公钥、对称算法技术设计一个针对文件的加密、解密工具。 基本要求: 1. 在上一实验内容基础上进行改造,基于给定公钥文件获取公钥,对临时生成的对称密钥加密,然后使用对称密钥对任意长度和任意编码的文件进行加密,输出密文文件。 2. 给定以上得出的任意加密文件形式,可以输入私钥文件并解密加密的文件,还原原始文件。 实验三 签名应用 实验内容:调用编程接口(如OPENSSL)使用公钥数字签名算法在文件加密基础上附带数字签名,以使得解密文件的时候可以验证签名,保证文件完整性。 基本要求: 1. 在前一个实验基础上,在加密文件时将密文文件里附加数字签名。 2. 对给定上面形式的密文 - **Primary Language**: C++ - **License**: MulanPSL-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2019-12-21 - **Last Updated**: 2023-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # security_cli_cpp 信息安全导论实验。 C++实现。 ## 实验一 对称加密应用 实验内容:调用编程接口(如OPENSSL)只使用对称算法技术设计一个针对文件的加密、解密工具。 基本要求: - 基于口令生成对称密钥,使用对称密钥对任意长度和任意编码的文件进行加密,输出密文文件。 - 给定以上得出的任意加密文件形式,可以解密文件还原原始文件。 ## 实验二 公钥加密应用 实验内容:调用编程接口(如OPENSSL)使用公钥、对称算法技术设计一个针对文件的加密、解密工具。 基本要求: - 在上一实验内容基础上进行改造,基于给定公钥文件获取公钥,对临时生成的对称密钥加密,然后使用对称密钥对任意长度和任意编码的文件进行加密,输出密文文件。 - 给定以上得出的任意加密文件形式,可以输入私钥文件并解密加密的文件,还原原始文件。 ## 实验三 签名应用 实验内容:调用编程接口(如OPENSSL)使用公钥数字签名算法在文件加密基础上附带数字签名,以使得解密文件的时候可以验证签名,保证文件完整性。 基本要求: - 在前一个实验基础上,在加密文件时将密文文件里附加数字签名。 - 对给定上面形式的密文 ### 使用说明 建议在Linuxx环境下运行。可以使用CLion导入项目。 ```shell 用法: scli [选项]... 使用scli对文件进行加密/解密或签名。 选项: -a 必须,指定加解密算法。 可选:{DES | RSA}。 -d 解密文件。 与选项-e/-s不能一起使用。 -e 加密文件。 与选项-d/-s不能一起使用。 -h 列出该帮助信息。 -i 必须,指定输入文件。 -k 指定密钥文件。 在非对称加密算法中有效。 加密时作为公钥文件,解密时作为私钥文件。 -o 必须,指定输出文件。 -p 指定加密或签名口令。 -s 签名文件。 与选项-d/-e不能一起使用。 ``` 例如:使用des算法加密~/test.txt,口令为pass,输出到文件~/test.des: ```shell scli -e -a des -p pass -i ~/test.txt -o ~/test.des ```