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

标签 python encryption openssl aes

我有一个名为 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)

关于python - 为什么具有相同 key 的相同字符串的 AES 加密密码总是不同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11818684/

相关文章:

python - 如何在 python 中水平打印 'tight' 点?

python - 大数据矩阵分解推荐系统给出MemoryError

Java AES-128 ECB 加密

sql-server - 可用于加密 SQL Server Express 数据库的选项有哪些?

ruby-on-rails - 未初始化的常量 OpenSSL (NameError)

java - 使用 Java 使用提供的 key 和 iv 解密 openssl aes-256-cbc

java - AES与Rijndael的关键时间表

python - tarfile.extractall() 引发 IsADirectoryError 因为提取路径存在

python 对以数字开头的字符串进行排序

c# - 加密值每次都不会返回相同的值