美文网首页
openssl在VS中配置使用

openssl在VS中配置使用

作者: 林木木_f297 | 来源:发表于2020-03-13 10:42 被阅读0次

环境

  • win10
  • vs2012
  • openssl oomake版本

踩坑

  • 32位和64位的区别
    vs2012生成的是32位的项目,不要使用64位的openssl!不要使用64位的openssl!不要使用64位的openssl!(这个bug搞了好久就是搞不出来,后来换了32位才好一点

  • 我找不到libeay.lib和ssleay.lib怎么办
    openssl1.10版本对上面两个lib进行了修改,分别改名:libcrypto和libssl,导入这两个就可以了

正确步骤

  • 下载vs2012
  • 下载openssl1.10的32位版本
  • 创建一个控制台空项目
  • 对项目属性进行如下的设置
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;
}

相关文章

网友评论

      本文标题:openssl在VS中配置使用

      本文链接:https://www.haomeiwen.com/subject/glafshtx.html