C语言实现SM4(基于GMSSL)
学习小白,有问题大牛可以指出来,本文主要是记录学习中遇到问题
环境:vs2019 gmssl 32位编译
1、首先新建项目
2、在VS的工程设置工程属性(参考连接https://blog.****.net/zhonghua_****/article/details/99011892)
- 右击工程名 ——> 选择“属性”
- 在“VC++目录”——> “包含目录”中添加openSSL的include文件(在您安装openssl的文件下)
- 在“VC++目录”——> “库目录”中添加openSSL的lib文件(在您安装openssl的文件下)
- 在“链接器”——>“输入”——>“附加依赖项”中添加libssl.lib和libcrypto.lib(键盘输入);
- 将OpenSSL安装目录下bin文件夹中的“libcrypto-1_1-x64.dll”和“libssl-1_1-x64.dll”(名字和版本号可能不同)复制到你的项目工程目录下
3、引入已安装的gmssl:
第一步:将已有的gmssl下include中的openssl复制到自己项目的根目录下
第二步:在项目中新建openssl筛选器,并且将openssl文件夹中的文件复制到项目中
第三步: 修改C/C++ -> 附加包含目录添加:./;%(AdditionalIncludeDirectories)
4、编写demo(参考连接:https://blog.****.net/xueaiwen/article/details/103189443)此部分只有加密的验证
#include "openssl/sms4.h" #define GETCH() getchar() int SM4_ECB(int Flag, unsigned char* Key, unsigned char* In, unsigned char* Out, unsigned int Len); /* for (i = 0; i < PadLen / 16; i++) if (inLen <= 0) memcpy(Out, In, inLen); memcpy(Out + *outLen, tmpPadding, PaddingLen); int main() unsigned int len = sizeof(pbPlainText); |
5、编译遇到错误
解决方法:右键属性—c/c++—预处理器
6、调试报错
解决方法:此时需要将dll 和lib都copy到本地项目的debug目录下
7、调试程序成功