Encryption
帶有openssl的河豚ecb沒有給出預期的結果
我通過 Linux CLI 執行以下操作:
printf '\xff\xff\xff\xff\xff\xff\xff\xff' > plaintext.txt openssl enc -bf-ecb -e -in plaintext.txt -out ciphertext.txt -nosalt -K FFFFFFFFFFFFFFFF -p
然後我閱讀了 ciphertext.txt 的內容,
<?= bin2hex(file_get_contents('ciphertext.txt')); ?>
我得到了這個:5aacfb5a8dc0155dd0269124c9e81789
然而,根據https://www.schneier.com/code/vectors.txt,結果是這樣的:
51866fd5b85ecb8a
由於填充,該 ciphertext.txt 的長度是測試向量結果的兩倍。但是 ciphertext.txt 的前八個字節不應該與測試向量匹配嗎?
使用(相同的明文和相同的密鑰)執行上述操作會得到與https://www.cosic.esat.kuleuven.be/nessie/testvectors/bc/des/Des-64-64.test-vectors提到
des-ecb
的相同的輸出(設置3, vector#255) 所以看起來我的測試方法是正確的。有任何想法嗎?
-bf-ecb
密碼通過零擴展密鑰將密鑰擴展為 128 位。的輸出
-p
是這裡的跡象:$ openssl enc -bf-ecb -e -in plaintext.txt -out ciphertext.txt -nosalt -K FFFFFFFFFFFFFFFF -p key=FFFFFFFFFFFFFFFF0000000000000000
Blowfish 是為 32-448 位密鑰定義的,OpenSSL 實現似乎選擇了 128 位作為要使用的大小,並添加了較短密鑰的零擴展作為“方便”。
將此與 比較
-des-ecb
,其中 DES 僅針對 64 位密鑰定義:$ openssl enc -des-ecb -e -in plaintext.txt -out ciphertext-des.txt -nosalt -K FFFFFFFFFFFFFFFF -p key=FFFFFFFFFFFFFFFF