openssl在VS中配置使用

2020-03-13  本文已影响0人  林木木_f297

环境

踩坑

正确步骤

1:右击工程名 ——> 选择“属性”
2:在“VC++目录”——> “包含目录”中添加openSSL的include文件地址(在你安装openssl的文件下)
3:在“VC++目录”——> “库目录”中添加openSSL的lib文件地址(在你安装openssl的文件下)
4:在“链接器”——>“输入”——>“附加依赖项”中添加libssl.lib和libcrypto.lib(键盘输入);
5:将OpenSSL安装目录下bin文件夹中的“libcrypto-1_1-x64.dll”和“libssl-1_1-x64.dll”\
(名字后面的版本号可能因更新而不同)复制到你新建的项目工程目录下

附上一段测试代码

#include <stdio.h>
#include <openssl/aes.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    unsigned char key[16+1] = "my-key-i-choosed"; // 128bits key (应该是真正的随机数才好)
    char pt1[16+5+1] = "0123456789abcdef12345";   // 明文
    char ct[16+5+1];  // 密文
    char pt2[16+5+1]; // 解密后的明文

    AES_KEY k;
    unsigned char iv1[16+1] = {"1023456789abcdef"}; // 16+1,加密用
    unsigned char iv2[16+1] = {"1023456789abcdef"}; // 16+1,解密用

    {   // single blcok test
        AES_set_encrypt_key(key, 16*8, &k); 
        AES_encrypt((unsigned char*)pt1, (unsigned char*)ct, &k);

        AES_set_decrypt_key(key, 16*8, &k);
        AES_decrypt((unsigned char*)ct, (unsigned char*)pt2, &k);

        if (memcmp(pt1, pt2, 16)==0)
            puts("AES block ok");
        else
            puts("AES block err");
    }

    {   // cfb mode (stream mode)
        int num=0;
        AES_set_encrypt_key(key, 16*8, &k); 
        AES_cfb128_encrypt((unsigned char*)pt1, (unsigned char*)ct,
            16+5, &k, (unsigned char*)iv1, &num, AES_ENCRYPT);

        num=0;
        AES_set_encrypt_key(key, 16*8, &k); // MUST as enc
        AES_cfb128_encrypt((unsigned char*)ct, (unsigned char*)pt2,
            16+5, &k, (unsigned char*)iv2, &num, AES_DECRYPT);      

        if (memcmp(pt1, pt2, 16+5)==0)
            puts("AES CFB mode ok");
        else
            puts("AES CFB mode err");
    }
    system("pause");
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读