为什么每次加密的$en内容不同?
// aquire public key from server
$server_public_key = openssl_pkey_get_public(file_get_contents("C:\publickey.pem"));
// rsa encrypt
openssl_public_encrypt("123", $encrypted, $server_public_key);
我也尝试过这个
$publicKey = "file://C:/publickey.pem";
$privateKey = "file://C:/privatekey.pem";
$plaintext = "String to encrypt";
openssl_public_encrypt($plaintext, $encrypted, $publicKey);
$transfer = base64_encode($encrypted);
openssl_private_decrypt($encrypted, $decrypted, $privateKey);
echo $transfer; //encrypted string
$transfer每次都是不同的字符串:…
Z1xyMUquARxcGjqjjSHNAm41CnHI02GXxLyFivvta8YhDkhRJdD4i3kx 8GElljdiSY / NMF9UD3ritWMLGmscdq / QyIf geYxJFePNd1dNWg V6zbAKR LaEpsUyZZtZZTK9NZ9KNZ9KZKNK9N
mRgLPsPtMoV9la7zzuU cLzS5xMDp7QUmH6Iv4Sv4 / FNjt62zcv9ZMWkfG3uVhS8Z1UDtGl met1CYjBTcfjHCR6hahbwOkTCICXtkRQcc371vUyHYZYKYYB1QY2Y6Y3Y2Y3Y2Y6Y3Y2Y6Y2Y2Y2Y2Y6Y3Y2Y2Y2Y2Y2Y2Y7Y2Y6Y7Y2Y7Y2Y6Y7Y2Y6Y7Y7Y7Y2J6Y
G5FhMoJGiUwEBvEOeZpDDrEXdxbWX5iaJ6F VdYJ3CURPRMftskZNlDhat8gA5V0G 3nXVQZptkHjxMkOqPlmwJHjgIqAiFppHLpEKohyT9qNwkAR9Y6ZWZ0Z6ZWZ0Z6Z
解决方法:
PKCS#1加密算法使用一些随机种子来使密文每次都不同.
这样可以保护密文免受多种攻击,例如频率分析,密文匹配.例如,如果您使用公共密钥对所有密码进行加密而没有随机性.所有相同的密码将产生相同的密文.有人可以通过检查密文的频率来找出所有流行的密码.
对于对称密钥加密,IV(初始向量)起类似的作用.