openssl 的RSAD的调用

问题描述

openssl 的RSAD的调用

function RSA_decrypt(var tmp:PAnsiChar):PAnsiChar ; stdcall;
var
rsa: PRSA;
key: PBIO;
pkey: PEVP_PKEY;
keysize :Integer;
ret,P_en:PChar;
begin
key := BIO_new(BIO_s_file());
BIO_read_filename(key,'c:publickey.txt');
pkey := PEM_read_bio_PUBKEY(key,pkey,nil,nil);
rsa := EVP_PKEY_get1_RSA(pkey);
keysize := RSA_size(rsa);
P_en:=allocmem(keysize+1);
FillMemory(P_en,SizeOf(P_en),0);
//RSA_public_decrypt(keysize,tmp,ret,rsa,RSA_PKCS1_PADDING);

RSA_public_encrypt(keysize,tmp,P_en,rsa,RSA_PKCS1_PADDING);

Result:=P_en;
// RSA_free(rsa);
end;

调用有问题,一直返回空,不知道哪里的问题。。解密有内容后直接就崩溃。

解决方案

每步都判断一下返回值,看是否有失败

解决方案二:

怎么看? 有例子么?

时间: 2024-11-18 03:21:35

openssl 的RSAD的调用的相关文章

程序代码-(求助)openssl中的des调用

问题描述 (求助)openssl中的des调用 des加密中的ks为128字节,但实际上8字节不就可以了吗?形参和实参不会结合,求帮助 解决方案 OpenSSL - DESopenssl des 加密解密openssl 调用实例 解决方案二: 1.8字节是des算法的原始秘钥,128字节是原始秘钥处理过的秘钥: 2.主要是为了提升des的性能.

我使用过的一些校验函数

sha1: openssl提供了sha1的库,在安装openssl之后可以直接调用sha1. MD5: 函数原型见附件,其中static void MDFile (filename)是对文件进行MD5校验的,static void MDString (inString)是对字符串进行MD5校验的.可以直接使用,也可以封装成库后在调用,值得注意的是,需要将源码中函数定义中的static去掉. hash: hash算法见附件. TCP/IP/UDP/ICMP中的checksum: /*计算校验和*/

boost::asio译文

Christopher Kohlhoff Copyright 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布(见附带的LICENSE_1_0.txt文件或从http://www.boost.org/LICENSE_1_0.txt) Boost.Asio是用于网络和低层IO编程的跨平台C++库,为开发者提供了C++环境下稳定的异步模型. 综述 基本原理 应用程序与外界交互的方式有很多,可通过文件,网络,串口或控制台.例如在网络通信中,完成独

Yii2框架实现注册和登录教程_php技巧

注册 在advanced模板中,进入frontend/index.php?r=site%2Fsignup页面,可以看到框架的注册页面 填写完Username.Email和Password后点击Signup后,如果格式不对,frontend/models/SignuForm中的rules()函数会进行初步验证,所有格式正确后,数据传输到 frontend/controllers /SiteController中的 actionSignup()函数中,函数加载用户输入的注册信息,在frontend/

加密-aescbc加解密程序,调用了openssl库,在输出时为什么密文长度总是和初始向量长度一样?

问题描述 aescbc加解密程序,调用了openssl库,在输出时为什么密文长度总是和初始向量长度一样? memset(miyao, 0, 17); GetDlgItemText(hwnd,IDC_EDIT1,ivec,sizeof(ivec)); GetDlgItemText(hwnd,IDC_EDIT2,miyao,sizeof(miyao)); GetDlgItemText(hwnd,IDC_EDIT3,in,sizeof(in)); length=strlen(in); AES_set_

浅谈基于OpenSSL安全会话的实现

一.概述SSL SSL(Secure Socket Layer)安全套接字层,早期netscape公司想让工作在应用层中的各种协议在传输数据实现数据安全的目的,在应用层与tcp层之间引入的半层结构:SSL不仅是一种协议,也是一个库,能够实现让应用层的某种协议传输数据到tcp层之前调用SSL的功能:比如:应用层的HTTP.SMTP.FTP等协议到tcp层之前经过SSL的调用,在tcp层以HTTPS.SMTPS.FTPS形式传输数据:现在主流的版本是SSLv2.SSLv3. 二.了解OpenSSL

Linux:openssl实现https验证

毫无疑问, 编译安装apache使其支持openssl是很重要的,只有这样才可以实现https,下面我们一步一步的来. OpenSSL:SSL的开源实现 libcrypto:通用加密库,提供了各种加密函数 libssl:TLS/SSL协议的实现,基于会话的.实现了身份认证.数据机密性和会话完整性的TLS/SSL库 为了简单,这我都是用的yum安装的,但是还是告诉大家怎么编译安装.... 1,编译安装openssl [root@test4 ~]# tar zxvf  openssl-1.0.1c.

Java DESede用C++ Openssl实现

原文地址: http://my.oschina.net/mawx/blog/85424 最近在看一个项目的代码 开发语言:C++ 开发环境:VS2005 但有一个很别扭的地方,就是这个项目与外界的加密算法采用DESede,但其实现是采用jni调用java vm里面的函数. 查了一下,可以用Openssl来实现,但要注意model(ECB)和padding(PKCS#5) #资料 PKCS5, PKCS7和SSL3, 以及CMS(Cryptographic Message Syntax) 有如下相

PostgreSQL 如何实现网络压缩传输或加密传输(openssl)

要支持ssl连接, 数据库服务端和客户端都需要openssl包. 以CentOS 5.x 64为例 : openssl-0.9.8e-20.el5 openssl-devel-0.9.8e-20.el5 默认情况下PostgreSQL 读取openssl的配置文件openssl.cnf, 在openssl version -d返回的目录中. 当然也可以使用OPENSSL_CONF环境变量读取指定的配置的文件. PostgreSQL reads the system-wide OpenSSL co