我生成私钥/公钥和一个小文本文件,
openssl genrsa -out priv.pem
openssl rsa -out pub.pem -in priv.pem -pubout
echo "A" > plain.txt
当您使用公钥加密文本文件两次时,
openssl rsautl -encrypt -pubin -inkey pub.pem -in plain.txt -out cipher.txt
你会看到这两个 cipher.txt 不同。这是我不明白的。
我生成私钥/公钥和一个小文本文件,
openssl genrsa -out priv.pem
openssl rsa -out pub.pem -in priv.pem -pubout
echo "A" > plain.txt
当您使用公钥加密文本文件两次时,
openssl rsautl -encrypt -pubin -inkey pub.pem -in plain.txt -out cipher.txt
你会看到这两个 cipher.txt 不同。这是我不明白的。
当您使用公钥对文本文件进行两次加密时……您会看到两个 cipher.txt 不同。这是我不明白的。
这称为概率加密(相对于确定性加密)。它的设计方式是这样的,因此两次加密的相同消息不会产生相同的密文。这是由于 RSA 使用的屏蔽功能和填充功能。
如果加密产生相同的密文,那么你的对手可以获得信息。例如,如果您的对手看到一条他不理解的消息,但观察到您的军队在第二天早上攻击他的军队,他可能会猜测该消息是“黎明攻击”。如果他再次看到同样的加密信息,他可能会准备好在第二天黎明时进行攻击。
如果您想了解 MGF、OAEP 等的详细信息,加密堆栈交换中的人员可能会为您提供进一步的帮助。此外,Steve Bellovin 博士在An Introduction to Cryptography中对密码学进行了非常平易近人的介绍。