我有一個與RSA_public_encrypt加密問題。與RSA_public_encrypt OpenSSL問題
我有什麼:模數(1024位),指數(每次他們不改變)和明文。
我想要的是:使用RSA_PKCS1_OAEP_PADDING作爲模數和指數(作爲十六進制字符串傳遞)的公鑰對純文本進行加密。
問題是,RSA_public_encrypt函數會導致訪問衝突,我不明白爲什麼。我在互聯網上看到了很多類似的例子,但由於評論意見,它們似乎很好。
這裏是我的代碼:
procedure RSAPublicEncrypt(const PlainText, Modulus, Exponent: AnsiString);
var
PublicKey: pRSA;
Output: Integer;
BN_Modulus, BN_Exponent: pBIGNUM;
Res: AnsiString;
begin
Result := '';
try
PublicKey := RSA_new(); //Creating new key
PublicKey^.n := BN_new; //Creating new modulus
Output := BN_hex2bn(PublicKey^.n, PAnsiChar(Modulus)); //Convert modulut from hex to BIGNUM
PublicKey^.e := BN_new; //same to the exponent
BN_hex2bn(PublicKey^.e, PAnsiChar(Exponent));
//Trying to encrypt. Here I get the AV
Output := RSA_public_encrypt(Length(PlainText), PAnsiChar(PlainText), PAnsiChar(Res), PublicKey, RSA_PKCS1_OAEP_PADDING);
finally
BN_clear_free(PublicKey^.e);
BN_clear_free(PublicKey^.n);
RSA_free(PublicKey);
end;
end;
我在做什麼錯?請幫幫我。提前致謝!