首页 > 编程语言 >Qt中openssl配置,提示OPENSSL_Applink错误(程序异常退出错误)

Qt中openssl配置,提示OPENSSL_Applink错误(程序异常退出错误)

时间:2022-11-16 13:07:24浏览次数:43  
标签:Qt 错误 RSA rsa len OPENSSL char NULL data


首先在QTcreater创建的QT工程中配置静态库和头文件

1、

LIBS += -L"E:\OpenSSL-Win32\lib" -llibcrypto

LIBS += -L"E:\OpenSSL-Win32\lib" -llibssl

INCLUDEPATH += $$quote(E:\OpenSSL-Win32\include)

2、openssl的bin目录下把libcrypto-1_1.dll和msvcr120.dll复制到工程目录下,就是拷到build后生成的文件夹比如(debug和release文件夹下),如果不复制,构建时QT会提示程序异常退出。

3、OK,开始运行项目报错:

OPENSSL_Uplink(6B437000,08): no OPENSSL_Applink

这个错呢,百度上一搜就有答案了,就是添加一个头文件

#include "applink.c"

BUT,我的openssl的include里没有applink.c文件,经过一番寻找后,终于在某篇博客中看到:

1.1的版本在include/openssl的目录下没有applink.c

我的解决办法:直接去1.0.2那个版本下把applink.c拷贝到你QT工程所在的目录下,然后在工程中添加现有文件把applink.c添加到工程中。

注意:

如果在添加到工程中后,在代码内再加上头文件#include "applink.c",就又会报指针赋值错误,如果不添加这个头文件,直接构建,运行就都过了。

完美运行,最后附上我的两个加密解密函数,使用之前记得先创建秘钥,具体操作百度很详细。

(data是需要加密/解密的数据,第二个参数是秘钥的路径)

char *data_encrypy(char *data, char *PUB_KEY)

{

//对数据进行加密函数

char *encry_data;

RSA *p_rsa;

FILE *file;

int data_len, rsa_len;

if ((file = fopen(PUB_KEY, "r")) == NULL)

return NULL;

if ((p_rsa = PEM_read_RSA_PUBKEY(file,NULL,NULL,NULL)) == NULL)

return NULL;

data_len = strlen(data);

rsa_len = RSA_size(p_rsa);

encry_data = (char *)malloc(rsa_len+1);

memset(encry_data, 0, rsa_len+1);

if (RSA_public_encrypt(rsa_len, (unsigned char *)data,

(unsigned char *)encry_data, p_rsa, RSA_NO_PADDING)<</span>0)

return NULL;

RSA_free(p_rsa);

fclose(file);

return encry_data;

}

char *data_decrypy(char *data, char *SSL_KEY)

{

//对数据进行解密函数

char *decry_data;

RSA *p_rsa;

FILE *file;

int rsa_len;

if ((file = fopen(SSL_KEY, "r")) == NULL)

return NULL;

if ((p_rsa = PEM_read_RSAPrivateKey(file,NULL,NULL,NULL)) == NULL)

return NULL;

rsa_len = RSA_size(p_rsa);

decry_data = (char *)malloc(rsa_len+1);

memset(decry_data, 0, rsa_len+1);

if (RSA_private_decrypt(rsa_len, (unsigned char *)data, (unsigned char *)decry_data,

p_rsa, RSA_NO_PADDING) <</span> 0)

return NULL;

RSA_free(p_rsa);

fclose(file);

return decry_data;

}

标签:Qt,错误,RSA,rsa,len,OPENSSL,char,NULL,data
From: https://blog.51cto.com/u_15858333/5855818

相关文章