![使用 OpenSSL 解密檔案時出現問題:“十六進位字串太短,用零位元組填充長度”](https://rvso.com/image/1703328/%E4%BD%BF%E7%94%A8%20OpenSSL%20%E8%A7%A3%E5%AF%86%E6%AA%94%E6%A1%88%E6%99%82%E5%87%BA%E7%8F%BE%E5%95%8F%E9%A1%8C%EF%BC%9A%E2%80%9C%E5%8D%81%E5%85%AD%E9%80%B2%E4%BD%8D%E5%AD%97%E4%B8%B2%E5%A4%AA%E7%9F%AD%EF%BC%8C%E7%94%A8%E9%9B%B6%E4%BD%8D%E5%85%83%E7%B5%84%E5%A1%AB%E5%85%85%E9%95%B7%E5%BA%A6%E2%80%9D.png)
我在嘗試使用 Open SSL 解密檔案時遇到問題。我有一個由我的講師提供的名為的文件fc382Crypto.bin
,我需要使用 CBC 模式的河豚演算法對其進行解密。
這是我用來解密檔案的命令:
openssl enc -aes-128-cbc -d -in fc382Crypto.bin -out decrypted_output.txt -K 112233445566778899 -iv 0000000000000000
但是,我不斷收到以下錯誤:
hex string is too short, padding with zero bytes to length
hex string is too short, padding with zero bytes to length
bad decrypt
我嘗試透過添加選項來調整命令-nopad
,但問題仍然存在。我還驗證了文件的完整性fc382Crypto.bin
以確保它沒有損壞。
我的導師提供的加密設定如下:
Algorithm: Blowfish
Mode: CBC
Key: 112233445566778899
IV: 0
我不確定為什麼會遇到此錯誤或如何解決它。有人可以提供有關如何使用 OpenSSL 正確解密此文件的指導嗎?
答案1
我不確定為什麼會遇到此錯誤或如何解決它。
您使用的是 128 位元加密演算法。因此,您的加密金鑰和初始化向量 (IV) 需要為 128 位元長。
鑰匙:0x00000000000000112233445566778899
四: 0x000000000000000000000000000000000
AES-128 加密方法顯示媒體段已使用高級加密標準 (AES) [AES_128] 和 128 位元金鑰、密碼區塊鏈 (CBC) 和公鑰加密標準 #7 (PKCS7) 進行完全加密填充[RFC5652]。 CBC 在每個段邊界上重新啟動,使用初始化向量 (IV) 屬性值或媒體序號作為 IV;請參閱第 5.2 節。
四號
該值是一個十六進位序列,指定與金鑰一起使用的 128 位元無符號整數初始化向量。使用 IV 屬性需要相容版本號為 2 或更大。有關 IV 屬性何時使用的信息,請參閱第 5.2 節。