解析OpenSSL1.1.1 centos7安装编译aes的c++调用

 更新时间:2022年03月24日 11:50:15   作者:禾烟雨  
这篇文章主要介绍了OpenSSL1.1.1 centos7安装编译aes的c++调用,实现方法也很简单,主要是在该文档内加入openssl的lib路径,感兴趣的朋友跟随小编一起看看吧

装这个主要是拿来和我自己写的aes代码做验证的,但是其实OpenSSL能干的事情挺多的。

下载地址

https://github.com/openssl/openssl/archive/OpenSSL_1_1_1d.tar.gz 

tar -zxvf openssl-OpenSSL_1_1_1d.tar.gz
cd openssl-OpenSSL_1_1_1d
sudo mkdir /usr/local/openssl
./config --prefix=/usr/local/openssl
make
sudo make install
sudo mv /usr/bin/openssl /usr/bin/openssl.old
sudo mv /usr/include/openssl /usr/include/openssl.old
sudo ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
sudo ln -s /usr/local/openssl/include/openssl /usr/include/openssl
sudo vim /etc/ld.so.conf

在该文档内加入openssl的lib路径

/usr/local/openssl/lib

:wq保存

sudo ldconfig -v
openssl version

测试代码如下:

//test.cpp
#include <iostream>
#include <stdio.h>
#include <memory.h>
#include <stdlib.h>
#include <cstring>
#include <openssl/aes.h>
using namespace std;

static int getIntFromChar(char c);
//把一个字符转变成整型
static int getIntFromChar(char c) {
	int result = (int)c;
	return result & 0x000000ff;
}
int main(int argc, char *argv[]){
    unsigned char buf2[16];
    unsigned char buf3[16];
	char str[16];
	unsigned char strr[16];
	int len;
	printf("输入明文:\n");
	scanf("%s",str);
	len=strlen(str);
	printf("len=%d\n",len);
	
	for(int i=0;i<len;i++){
		strr[i]=getIntFromChar(str[i]);
	}
	unsigned char aes_keybuf[16]; 
	char key[16];
	getchar();
	printf("输入密钥:\n");
	scanf("%s",key);
	for(int i=0;i<16;i++){
		aes_keybuf[i]=getIntFromChar(key[i]);
    AES_KEY aeskey;
    // 设置加密密钥 
	AES_set_encrypt_key(aes_keybuf, 128, &aeskey);
    // 加密
	AES_encrypt(strr,buf2,&aeskey);
	printf("输出加密结果:\n");
		printf("%x ",buf2[i]);
	printf("\n");	
    //设置解密密钥
	AES_set_decrypt_key(aes_keybuf, 128, &aeskey);
    //解密
    AES_decrypt(buf2, buf3, &aeskey);
    
    buf3[16]='\0';
    printf("输出解密结果:\n");
    printf("%s\n",buf3);
    return 0;
g++ test.cpp -o test -L/usr/local/openssl/lib -lcrypto
./test

运行效果如图

在这里插入图片描述

到此这篇关于OpenSSL1.1.1 centos7安装编译aes的c++调用的文章就介绍到这了,更多相关centos7 安装编译OpenSSL1.1.1内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 推荐几款C/C++的编译器、编译环境(非常全面的比较)

    推荐几款C/C++的编译器、编译环境(非常全面的比较)

    这篇文章主要介绍了C/C++编译器的一些易混淆概念,这里脚本之家小编特为大家分享一下,需要的朋友可以参考下
    2021-06-06
  • C/C++ 实现递归和栈逆序字符串的实例

    C/C++ 实现递归和栈逆序字符串的实例

    这篇文章主要介绍了C/C++ 实现递归和栈逆序字符串的实例的相关资料,这里提供实例代码帮助大家学习掌握,需要的朋友可以参考下
    2017-08-08
  • C++单链表实现大数加法

    C++单链表实现大数加法

    这篇文章主要为大家详细介绍了C++单链表实现大数加法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • C语言超全面讲解函数的使用方法下

    C语言超全面讲解函数的使用方法下

    函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数,由于篇幅过大,分为两篇讲解,下面开始下篇
    2022-04-04
  • C++11并发编程关于原子操作atomic的代码示例

    C++11并发编程关于原子操作atomic的代码示例

    今天小编就为大家分享一篇关于C++11并发编程关于原子操作atomic的代码示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 利用C语言实现n字棋游戏

    利用C语言实现n字棋游戏

    本文将利用C语言编写一个n字棋游戏,和井字棋一样,不过这个游戏你可以自定义棋盘的大小。文中的示例代码讲解详细,感兴趣的小伙伴可以尝试一下
    2022-05-05
  • 关于STL中list容器的一些总结

    关于STL中list容器的一些总结

    list就是数据结构中的双向链表(根据sgi stl源代码),因此它的内存空间是不连续的,通过指针来进行数据的访问,这个特点使得它的随即存取变的非常没有效率,因此它没有提供[]操作符的重载
    2013-09-09
  • C语言 设计模式之访问者模式

    C语言 设计模式之访问者模式

    这篇文章主要介绍了C语言 设计模式之访问者模式的相关资料,需要的朋友可以参考下
    2017-01-01
  • c++ 预处理的图灵完备之引言

    c++ 预处理的图灵完备之引言

    这篇文章主要介绍了c++ 预处理的图灵完备之引言,需要的朋友可以参考下
    2017-07-07
  • C语言实现红黑树详细步骤+代码

    C语言实现红黑树详细步骤+代码

    大家好,本篇文章主要讲的是C语言实现红黑树详细步骤+代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01

最新评论