我从服务提供商处获得了一个公钥,现在我想加密密码。
我试图以这种方式加密
$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==
我应该指定我想要使用的密码,还是我生成有效加密文本的密钥?>
答案 0 :(得分:1)
您已指定了密码。您的证书无疑包含RSA公钥 - 因此只能使用此证书进行RSA加密。并且您已指定PKCS#1填充,它确定用于RSA加密的加密方案。
毫无疑问,您已经生成了有效加密的文本。然而,100%肯定的唯一方法是用私钥解密所述密文(当然,在基本64解码密文之后)。如果它返回您的纯文本消息 - "safari323!"
- 那么您就知道解密成功了。
请注意,PKCS#1并不像以前那样安全。目前最好的品种是OAEP填充或RSA-KEM。