我正在使用openssl来了解有关对称加密的更多信息。我读到ECB(电子密码本)模式不如CBC(密码块链接)那么安全的一个原因是由于在ECB模式下,密码(在这种情况下,aes-128)在128位加密时间,这可能导致出现相同的序列。例如,如果文件中多次出现“安全性”一词,并且它们恰好以128位序列对齐,则应出现重复序列。我试图在实际环境中看到这种效果,特别是使用openssl。
我输入的命令是:
openssl aes-128-ecb -a -in plain.txt -out cipher.txt
plain.txt包含: 0123456789abcdef0123456789abcdef
我使用的加密密码是“密码”(没有双引号)。
cipher.txt包含: U2FsdGVkX18qCQ5SjLaVsLS8als / h5eJl69ATS3pD94x5kwkpmfNWauW / lUOZdeC 5a38fSS7mTUc7hT7XiXdIw ==
如果我正确理解了所有内容,则plain.txt中的每个字符都应代表一个字节。 16个字符= 128位。正如您所看到的,我正在尝试将序列与128位块对齐以查看重复序列。
上面的逻辑出了什么问题?
答案 0 :(得分:8)
您的命令行使用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