Php 在给定cert.cer时加密密码

Php 在给定cert.cer时加密密码,php,encryption,Php,Encryption,我已从服务提供商处获得公钥,现在我想加密密码 我尝试过用这种方式加密 $publicKey = file_get_contents('cert.cer'); //$plaintext = "Safaricom132!"; $plaintext = "safaricom323!"; openssl_public_encrypt($plaintext, $encrypted, $publicKey, OPENSSL_PKCS1_PADDING); echo base64_encode($encr

我已从服务提供商处获得公钥,现在我想加密密码

我尝试过用这种方式加密

$publicKey = file_get_contents('cert.cer');
//$plaintext = "Safaricom132!";
$plaintext = "safaricom323!";

openssl_public_encrypt($plaintext, $encrypted, $publicKey, OPENSSL_PKCS1_PADDING);

echo base64_encode($encrypted);
我得到这个结果

k97YxoV0uS08ok0n99id8PPp9kfSdebhdHaVroTmGF16hR70+U30xSrsRgIaVvHrzu535oH7Mz2TxkgQktq4TmVnxIhWbwBYDlVfnNoAUaHAW/oOYbF6bRR+vCHvMAI8TrQLaMK8XhVMjHqr27pmoqEyzEYC0sop+rp2T81CcWFlyJDr57GHuSoeka8pHMFSsGGvU7S+K0ZZ7xNQGOUpvT8skDMo3u7RUjbDk466dEtR1SUWfYTwVcrBCAFWI9ElfzFzgrWSr+ECelbU7n4D9dJegt9HvPhI2Nnc2q0V7DvHdwO+lHt7tKlM9xbxCTewiFHWjn9+lCAzwqnorHwN3g== 
我应该指定要使用的密码还是我生成的有效加密文本的密钥?>

您已经指定了密码。您的证书无疑包含一个RSA公钥,因此只有RSA加密才能使用此证书。您已经指定了PKCS1 padding,它决定了用于RSA加密的加密方案

毫无疑问,你已经生成了一个有效加密的文本。然而,要100%确定,唯一的方法当然是在Base64解码密文之后用私钥解密所述密文。如果它返回您的明文消息-safari323!-那你就知道解密成功了


请注意,PKCS1并不像人们曾经认为的那样安全。目前最好的产品是OAEP padding或RSA-KEM。

我不应该在什么地方使用RSA吗?