使用gmssl進行計算sm4,編譯的版本是gmssl2.0,2.1版本編譯不過去
第一步下載軟件,下載Visual Studio 2010旗艦版、nasm-2.13.03-installer-x86、ActivePerl-5.22.4.2205-MSWin32-x86-64int-403863這三個軟件,
注意vs版本不能太低,否則便宜的時候容易出現錯誤。
第二部使用命令進行編譯,生成lib庫和dll庫,請選擇好生成的版本,32位或者64位的dll庫
perl Configure VC-WIN32
nmake
nmake install
第三步:在vs2010中調用該接口,可以使用dll直接調用,或者使用lib庫,直接導入頭文件。注意在選擇選擇vs2010中的平臺配置,64位x64或者32位x86
HMODULE mHandle = LoadLibrary(L"libcrypto-1_1-x64.dll");
//pSms4_set_encrypt_key Sms4_set_encrypt_key = (pSms4_set_encrypt_key)GetProcAddress(mHandle, "sms4_set_encrypt_key");
//pSms4_encrypt Sms4_encrypt = (pSms4_encrypt)GetProcAddress(mHandle, "sms4_encrypt");
#pragma comment(lib, "libssl.lib")
#pragma comment(lib, "libcrypto.lib")
sms4_key_t key;
unsigned char user_key[16] = {
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
};
unsigned char plaintext[16] = {
0x77, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
};
unsigned char buf[16];
/* test key scheduling */
sms4_set_encrypt_key(&key, user_key);
sms4_encrypt(plaintext, buf, &key);
?