为什么openssl aes-128-ecb不';不会导致重复序列吗?

为什么openssl aes-128-ecb不';不会导致重复序列吗?,openssl,aes,Openssl,Aes,我正在玩弄openssl来了解更多关于对称加密的知识。我读到ECB(电子码本)模式不如CBC(密码块链接)安全的一个原因是,在ECB模式下,密码(在本例中为aes-128)一次加密128位,这可能导致出现相同的序列。例如,如果单词“security”在文件中多次出现,并且它们恰好以128位序列对齐,则应出现重复序列。我试图在实际环境中看到这种效果,特别是在openssl中 我键入的命令是: openssl aes-128-ecb -a -in plain.txt -out cipher.txt

我正在玩弄openssl来了解更多关于对称加密的知识。我读到ECB(电子码本)模式不如CBC(密码块链接)安全的一个原因是,在ECB模式下,密码(在本例中为aes-128)一次加密128位,这可能导致出现相同的序列。例如,如果单词“security”在文件中多次出现,并且它们恰好以128位序列对齐,则应出现重复序列。我试图在实际环境中看到这种效果,特别是在openssl中

我键入的命令是:

openssl aes-128-ecb -a -in plain.txt -out cipher.txt
包含的plain.txt文件: 0123456789abcdef0123456789abcdef

我使用的加密密码是“password”(没有双引号)

cipher.txt包含: U2FSDGVKX18QCQ5SJLVSLS8ALS/h5eJl69ATS3pD94x5kwkpmfNWauW/lUOZdeC 5a38fSS7mTUc7hT7XiXdIw==

如果我理解正确,那么plain.txt中的每个字符应该代表一个字节。16个字符=128位。正如你所看到的,我试图在128位块中对齐序列,以查看重复的序列


上面的逻辑有什么问题?

您的命令行使用base64、salt和padding,所有这些都会把事情搞砸。尝试:

openssl aes-128-ecb -in plain.text -out cipher.txt -nosalt -nopad
您会发现
cipher.txt
包含32个字节:

 83 d2 41 fb ca 6e 8a e3 3b 6e 55 ae 2c ac 62 af
 83 d2 41 fb ca 6e 8a e3 3b 6e 55 ae 2c ac 62 af