64位 Win10下 使用vs2017 安装使用 openssl-1.1.1库

0 前提:

之前一直是在linux下调用openssl命令行或者库函数,今天突发感觉,有必要在windows里边也试试,毕竟vs用起来还是比较舒服。

1 openssl 安装编译步骤

参考了网上各路大神的步骤,自己记录一下:

  1. 下载安装perl (用于win环境下调用脚本的工具)
    (注意,要是想编译64位的最好perl也下载64位的);默认一顿安装即可,下载地址:www.ActiverState.com 我用的版本如下,设置完环境变量后可以查看版本;
    在这里插入图片描述
  2. 配置perl的环境变量如下:(环境变量生效需重启)
    C:\Perl64\bin (命令行生效perl命令)
    C:\Perl64\site\bin (命令行生效dmake命令,configure里边貌似是调用到了);
  3. 安装vs2017,这个就不用说了,官网下载,注册账号学生试用就可以了;
  4. 下载openssl,地址: https://www.openssl.org/ 我下载的1.1.1版本,可以看后边的命令行输出;
  5. 解压openssl至C盘,我放在了根目录,打开openssl里边的install,看到说明如下: 在这里插入图片描述
  6. 在程序里边找到vs的命令行工具,如“适用于vs2017的x64本机工具命令提示”,注意右键选择“管理员权限运行”,进入到openssl的目录,依次运行install中的步骤
    a perl Configure VC-WIN64A (打算用asm,需要安装nasm)
    或者
    a perl Configure VC-WIN64A no-asm (不用asm)
    b nmake
    c nmake test
    d nmake install
  7. Openssl的环境变量 (环境变量生效需重启)
    C:\openssl-1.1.1\bin (命令行生效openssl命令;
  8. 至此,命令行里边应该已经可以使用openssl命令了, 看一下版本;
    在这里插入图片描述

2 vs2017使用openssl库

  1. 经过之前步骤的安装,应该在C:\Program Files\OpenSSL下生成了库文件,如图 在这里插入图片描述
  2. 新建一个vs2017的工程,可以选择windows控制台应用程序;
  3. 在工程属性页面,vc++目录,包含目录增加C:\Program Files\OpenSSL\include 库文件目录增加 C:\Program Files\OpenSSL\lib c/c++目录,附件包含目录增加C:\Program Files\OpenSSL\include 连接器页面输入,添加libcrypto.lib libssl.lib;
  4. 然后理论应该就可以用了,不过我遇到提示evp_cipher_ctx_st 不完整,我的理解这个在evp.h中有定义,然后引用crypto的lib,具体的定义在lib里边,但是始终不得其法,后来实在没办法,我把openssl源码里边的crypto也加到的include的路径里边,然后引用<evp/evp_locl.h>才通过编译。 这点没想明白,linux里边就不需要这个h文件,在生成执行文件时引用-lcrypto或者libcrypto.so即可,不知道vs2017这是什么情况。

3 附一段测试代码

// openssl_win.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include "unistd.h"
#include <openssl/evp.h>

#include <openssl/aes.h>
#include <evp/evp_locl.h>

#include <string.h>
#define AES_TEST_ENCRYPT_SIZE 1024*4
#define AES128_GCM_TAG_SIZE 16


#define AES128_GCM


typedef enum {
   
	encrypt_t,
	decrypt_t
}encrypt_or_decrypt_t;

#if defined(AES128_GCM)||defined(AES256_GCM)
//aes_gcm_data
uint8_t aes128_gcm_key[] = {
    0x98, 0xff, 0xf6, 0x7e, 0x64, 0xe4, 0x6b, 0xe5,0xee, 0x2e, 0x05, 0xcc, 0x9a, 0xf6, 0xd0, 0x12 };
uint8_t aes256_gcm_key[] = {
   
	0x60,0x3D,0xEB,0x10,0x15,0xCA,0x71,0xBE,0x2B,0x73,0xAE,0xF0,0x85,0x7D,0x77,0x81,0x1F,0x35,0x2C,0x07,0x3B,0x61,0x08,0xD7,0x2D,0x98,0x10,0xA3,0x09,0x14,0xDF,0xF4
};

uint8_t aes128_gcm_data[] = {
    0x29,0xb9,0x1b,0x4a
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值