我正在为 Visual Studio 6 中的 Win32 Dynamic_link 库编写 ac/c++ 代码。实际上我正在使用 libcryptoMD.lib 使用 pem 文件和 ppk 文件实现 RSA 加密。我可以在示例代码中执行此加密,但 PEM_read_RSAPublicKey() 在实际应用程序代码中崩溃。
我已经尝试将实际应用程序代码的所有项目设置设置为示例项目,因为实际应用程序代码的依赖库中可能存在一些冲突。但令我惊讶的是,示例项目成功运行,而实际应用却失败了。我还搜索了为什么这个函数可能在实际应用程序代码中崩溃,但找不到任何有用的答案。这个函数需要公钥pem文件的文件指针和RSA指针,这绝对没问题。
RSA * create_RSA(RSA * keypair, int pem_type, char *file_name) {
RSA *rsa = NULL;
FILE *fp = NULL;
if(pem_type == PUBLIC_KEY_PEM)
{
fp = fopen(file_name, "rb");
PEM_read_RSAPublicKey(fp, &rsa, NULL, NULL);
fclose(fp);
}
else if(pem_type == PRIVATE_KEY_PEM)
{
fp = fopen(file_name, "rb");
PEM_read_RSAPrivateKey(fp, &rsa, NULL, NULL);
fclose(fp);
}
return rsa;
}
PEM_read_RSAPublicKey(fp, &rsa, NULL, NULL);
崩溃显示
OPENSSL_Uplink(6F8D1880,08):实际应用代码中没有OPENSSL_Applink。