vs2012/15配置openssl进行加密代码测试无法解析函数

宋小八 发布于 2018/03/03 21:51
阅读 272
收藏 0

1.我在vs中配置了openssl相关库,在项目-属性-VC++目录-包含目录中添加了C:\openssl_lib\include;在项目-属性-VC++目录-库目录中添加了C:\openssl_lib\lib;如图所示

2.在项目-属性-链接器-输入-附加依赖项添加了libeay32.lib;ssleay32.lib;

3.运行代码程序生成可执行EXE时出错如图三不知道到底是哪里错了,不能运行程序,希望各位指点迷津

测试代码如下:

#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;
}

加载中
返回顶部
顶部