Delphi 如何用公钥解密数据

问题描述 投票:0回答:1

在我的 VCL 应用程序中,我向服务器发送请求并接收使用 php openssl_private_encrypt 使用私钥加密的数据。现在我想用公钥解密它。我有公钥。

在 RSA 算法中,公钥仅用于加密,因此所有 Delphi 加密组件(例如 TMS CryptographyDelphi-OpenSSL 等)都使用 openssl 使用私钥而不是公钥来解密数据。但 php openssl_public_decrypt 使用公钥解密数据。这个 php 语句是如何工作的? Delphi 相当于 php openssl_public_decrypt 语句的是什么?

我应该如何使用openssl用公钥解密数据?

php delphi encryption openssl public-key
1个回答
0
投票

Delphi-OpenSSL 已经过时了,因为它仍然依赖于

libeay32

您可以使用更新的实现,例如 Synapse,它支持版本 3.x,但不能立即支持它的 全部。您所需要做的就是导入您自己想要使用的功能。这应该不是一个大问题:

libcrypto-3.dll
导出
RSA_public_decrypt()
已经带有与 PHP 所做的几乎相同的签名:

int RSA_public_decrypt(int flen, unsigned char *from, unsigned char *to, RSA *rsa, int padding);

这大致翻译为(未经测试):

type SslPtr = Pointer; PRSA = SslPtr; function RSA_public_decrypt(flen: Integer; from, to_: PAnsiChar; rsa: PRSA; padding: Integer): Integer; cdecl;
    
© www.soinside.com 2019 - 2024. All rights reserved.