函数的定义是:function  RSA_public_decrypt(flen: Integer; from: PChar; _to: pChar; rsa: pRSA; padding: Integer):Integer; cdecl; external 'libeay32.dll';对这一块非常不熟悉,不知如何下手。

解决方案 »

  1.   

    rsa: PRSA;
    key: PBIO;
    pkey: PEVP_PKEY;
    keysize :Integer;key := BIO_new(BIO_s_file());
    //打开公钥文件
    BIO_read_filename(key,'c:\RSA_Pub.Key');
    //加载公钥
    pkey := PEM_read_bio_PUBKEY(key,NULL,NULL,NULL);
    //转为RSA公钥
    rsa := EVP_PKEY_get1_RSA(pkey);
    //公钥长度,用于控制每次解密的长度
    keysize := RSA_size(rsa);
    ...
    RSA_public_encrypt(in_size,in_buffer,out_buffer,rsa,RSA_PKCS1_PADDING);
    //返回-1表示失败,可以使用ERR_print_errors_cb输出错误
    //out_buffer以keysize大小为准,如果输入比较长,则一小段一小段地循环
      

  2.   

    可以了,只是这一句应改为:
    pkey := PEM_read_bio_PUBKEY(key,pkey,nil,nil); 
    结贴。