这是一期实践内容。
此次实验通过结合SM2非对称加密和SM4对称加密技术,展示了一种安全的数据加密和解密流程。它不仅增强了数据传输和存储的安全性,确保了只有授权用户才能访问敏感信息,而且通过密钥管理和访问控制,体现了加密技术在保护数据隐私和完整性方面的重要性。实验流程的实践操作有助于加深对加密原理的理解,并提高了在现实世界中应用加密技术解决安全问题的能力。
1 目标
- 生成SM2密钥对(公钥和私钥)
- 生成一个对称密钥(SM4密钥)
- 使用SM2公钥加密对称密钥
- 使用对称密钥加密文件
- 使用SM2私钥解密对称密钥
- 使用解密后的对称密钥解密文件
2 步骤
2.1安装GmSSL
sudo apt-get update
sudo apt-get install -y cmake gcc g++
git clone https://github.com/guanzhi/GmSSL.git
cd GmSSL
mkdir build && cd build
cmake ..
make
sudo make install
安装完成后确保GmSSL安装成功的命令:
gmssl version
具体实践过程见下
2.2生成SM2密钥对
使用3.1.2版本GmSSL适用命令行生成密钥对
sudo gmssl sm2keygen -pass 1234 -out sm2_private_key.pem -pubout sm2_public_key.pem
echo hello | sudo gmssl sm2encrypt -pubkey sm2_public_key.pem -out sm2.der#加密操作
echo hello | sudo gmssl sm2decrypt -key sm2_private_key.pem -pass 1234 -in sm2.der#解密操作
查看生成的SM2私钥和公钥内容如下:
2.3生成对称SM4密钥
gmssl rand -out sm4_key.bin -outlen 16
echo "This is a test file for encryption using SM4" > test.txt\
#使用SM4加密test.txt
gmssl sm4_ecb -in test.txt -out test.txt.enc -key sm4_key.bin
#使用SM2加密sm4_key.bin
gmssl sm2encrypt -pubkey sm2_public_key.pem -in sm4_key.bin -out sm4_key.enc
可参考以下执行过程
2.4 解密
#解密sm4_key.bin
gmssl sm2decrypt -in sm4_key.enc -out sm4_key.bin -key sm2_private_key.pem -pass yourpassword
#解密test.txt.enc
gmssl sm4_ecb -decrypt -in test.txt.enc -out decrypted_test.txt -key sm4_key.bin