我遇到了一個奇怪的問題。 我用字母'A'填充了一個文本文件,並將其長度設置爲4096個字節。 然後,使用OpenSSL加密它在Linux:在CBC模式下使用openssl和dmsetup進行AES加密的垃圾文件
KEY="2D242B65C517B72F8D1DAA8278CA5A2ED5D8A95BCF82BFD3778212218726335F" openssl enc -nosalt -iv 0 -K $KEY -aes-256-cbc -in $PLAINIMAGENAME -out $CRYPTIMAGENAME
(無鹽,無IV)
然後,試圖建立與DM-隱窩一個設備映射器回送設備:
losetup /dev/loop0 $CRYPTIMAGENAME sudo dmsetup create cryptotest --table "0 4096 crypt aes-cbc-null $KEY 0 /dev/loop0 0"
當我嘗試從/ dev/mapper/cryptotest讀取時,得到我的A,但每512字節(塊大小?)有16個字節的垃圾。這怎麼可能?
當我使用ECB模式(每塊都以相同的方式加密)時,一切正常。順便說一下,我不想使用LUKS進行環回加密,我需要一個無標題的AES流,它可以由openssl或aespipe創建。
這是填充:https://en.wikipedia.org/wiki/Padding_(cryptography) –
注意,AES的塊大小是16個字節。 – zaph
我相信dm-crypt使用不帶填充的CBC模式。這是因爲磁盤扇區是固定大小,並且總是塊大小的倍數。 ECB和CBC模式都可以解密塊,我感到很奇怪。 – jww