我使用PKCS#7使用python和填充來加密(tar)文件。這個加密文件然後發送到客戶端(一個帶有OpenWRT的路由器)。此路由器使用(linux)shell與openssl
命令解密它。然而,這最後一步失敗,出現以下信息:openssl命令如何處理python添加的PKCS#7填充
bad decrypt
2011837512:error:06065064:lib(6):func(101):reason(100):NA:0:
tar: short read
也許問題就出在填充,所以我想知道什麼樣的參數用於openssl
以避免此問題。有沒有其他的命令與-nopad
有關的填充?
以下Python代碼用於加密tar文件:
# Encrypt file
def aes_encrypt_file(in_filename, out_filename, key, iv):
block_size = AES.block_size
pad = lambda s: s + (block_size - len(s) % block_size) \
* chr(block_size - len(s) % block_size)
cipher = aes_build_cipher(key, iv)
with open(in_filename, 'rb') as infile:
with open(out_filename, 'wb') as outfile:
while True:
buf = infile.read(1024)
if len(buf) == 0:
break
elif len(buf) % block_size != 0:
buf = pad(buf)
outfile.write(cipher.encrypt(buf))
下面的shell命令用來解密路由器上的tar文件:
openssl aes-256-cbc -d -nosalt -K $sum256 -iv $iv -in ${PACKAGE} | tar xzf -
請重新閱讀的問題,你先解密,然後加密?發佈您的Python代碼和您擁有的任何openssl信息!目前這個問題太廣泛了。 –
謝謝你的表揚。我想知道的是openssl如何知道我在解壓後的文件中是什麼?我是否適合在python代碼中填充的方法? – nideyangzi1989
並原諒我的英語.. – nideyangzi1989