Skip to main content
 首页 » 编程设计

python之为什么具有相同 key 的相同字符串的 AES 加密密码总是不同的

2025年05月04日15小虾米

我有一个名为 plain.txt 的文件。在文件中我有:

Hello Hello Hello Hello 

我正在使用这个命令来加密它:

openssl enc -aes-128-cbc -salt -k "Hello" -in plain.txt -out encrypted.bin 

然后我像这样打印加密值:

buff = open("encrypted.bin") 
cipher = buff.read() 
buff.close() 
print b64encode(cipher) 

但总是不同的值。密码不应该总是一样的吗?我使用相同的文件和相同的密码对其进行加密。这些是我的终端输出:

Richard-Knops-MacBook-Pro:python_test richardknop$ openssl enc -aes-128-cbc -salt -k "Hello" -in plain.txt -out encrypted.bin 
Richard-Knops-MacBook-Pro:python_test richardknop$ python test.py U2FsdGVkX1+AmoQiIkYAxIYanLr/kbjMfEJPPLfeE/wtyxScvAKzb7K38ZxoI097 
Richard-Knops-MacBook-Pro:python_test richardknop$ openssl enc -aes-128-cbc -salt -k "Hello" -in plain.txt -out encrypted.bin 
Richard-Knops-MacBook-Pro:python_test richardknop$ python test.py U2FsdGVkX19vPD+OoiK7iSgYJiPMxuKGNWWrLlfBS0c3yCJkuv7QIBGEo2Q86UsV 
Richard-Knops-MacBook-Pro:python_test richardknop$ openssl enc -aes-128-cbc -salt -k "Hello" -in plain.txt -out encrypted.bin 
Richard-Knops-MacBook-Pro:python_test richardknop$ python test.py U2FsdGVkX1+3I8EC7u3lrcVPyD/JV12NAecWvTPXGga0Nh2cwqLAtGCDhLK6MI9g 
Richard-Knops-MacBook-Pro:python_test richardknop$  

请您参考如下方法:

因为“盐”每次都不同。例如,这可以防止对加密值的彩虹表类型攻击。参见 http://en.wikipedia.org/wiki/Salt_(cryptography)