在我的 VCL 应用程序中,我向服务器发送请求并接收使用 php openssl_private_encrypt 使用私钥加密的数据。现在我想用公钥解密它。我有公钥。
在 RSA 算法中,公钥仅用于加密,因此所有 Delphi 加密组件(例如 TMS Cryptography、Delphi-OpenSSL 等)都使用 openssl 使用私钥而不是公钥来解密数据。但 php openssl_public_decrypt 使用公钥解密数据。这个 php 语句是如何工作的? Delphi 相当于 php openssl_public_decrypt 语句的是什么?
我应该如何使用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;