在ubuntu环境下执行openssl编译和安装

这篇博客详细介绍了如何在Ubuntu 18.04上下载、编译和安装OpenSSL 1.1.1q版本。通过解压源码、配置、编译和安装,然后通过软链接替换旧版本并更新配置,确保新版本生效。最后,博主提供了代码示例,演示了如何在C++中使用OpenSSL进行文件MD5校验,并建议使用Clion进行代码编辑和测试。
摘要由CSDN通过智能技术生成

参考链接

下载

编译

  • 使用命令sudo tar -xvzf openssl-1.1.1q.tar.gz 解压。
  • 使用cd openssl-1.1.1q/进入目录
  • 使用./config生成MakeFile,不加任何参数,默认的安装位置为:/usr/local/bin/openssl

  • 使用 make 进行编译
  • 不放心的话可以使用make tset检查一下(可选步骤)
  • 使用sudo make install进行安装,这里一定要选择root用户的权限执行。 

 备份与替换

  • 到上一步openssl就算安装好了,但是还无法使用,需要通过软链接的方式将新旧版本就行替换,依次运行下列命令。

  •  sudo mv /usr/bin/openssl /usr/bin/openssl.old    //将旧版本的openssl进行备份
  • sudo ln -s /usr/local/bin/openssl /usr/bin/openssl    //将新版本的openssl进行软链接
  • cd /etc/   //进入etc目录
  • su     //下一步一定要切换到root用户
  • echo "/usr/local/lib" >> ld.so.conf    //将openssl的安装路径加入配置中
  • ldconfig  //重新加载配置
  • 使用openssl进行验证

补充

代码 

#include "openssl/md5.h"
#include <iostream>
#include <fstream>
#include <iomanip>

//#define MAX_DATA_BUFF = 1024;
//#define MD5_LENGTH = 16
char* get_file_md5(const char * path){
    char *out = (char *)malloc(33); //输出
    std::ifstream file(path,std::ios::in|std::ios::binary);//打开文件
    unsigned char MD5_result[16];
    do {
        if(file.fail()){
            std::cout<<"open file failure!"<<std::endl;
            break;
        }
        MD5_CTX md5_ctx;
        MD5_Init(&md5_ctx);
        char data_Buff[1024];
        while (!file.eof()){
            file.read(data_Buff,1024);//读取文件
            int length = file.gcount();
            if (length){
                MD5_Update(&md5_ctx,data_Buff,length);//将当前文件加入并且更新MD5
            }
        }
        MD5_Final(MD5_result,&md5_ctx); //获取MD5
        for (int i = 0; i < 16; i++) {  //将md5以16进制输出
            snprintf(&(out[i*2]),16*2,"%02x",(unsigned int)MD5_result[i]);
        }
    }while (false);
    return out;
}

int main(){
    std::string original_backup_file = "/home/chy-cpabe/test.txt";
    char *output = get_file_md5(original_backup_file.c_str());//original_backup_file为文件的名字
    std::cout << "md5:"<< output << std::endl;
    free(output);
}

  •  将执行结果和使用命令行计算得到的结果进行对比验证

 

 

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值