填充不正确。 AES Python 加密
Padding is incorrect. AES Python encryption
我正在尝试使用 python 进行简单的加密。
这是加密:
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from Crypto.Util.Padding import unpad
BLOCK_SIZE = 32
def encrypt(message):
obj = AES.new(b'This is a key123', AES.MODE_CBC, b'This is an IV456')
return obj.encrypt(pad(message, BLOCK_SIZE))
加密似乎有效 returns 这个:
b'V=\t7I\x99\xa5\x06*\xa1={\x95+\xc1h\xfeY\xc2\xb5\xcf3F:\x88\xa6g\x94d\x87\xd7U'
然而我使用的是解密:
def decrypt(ciphertext):
obj2 = AES.new(b'This is a key123', AES.MODE_CFB, b'This is an IV456')
return obj2.decrypt(unpad(ciphertext, BLOCK_SIZE))
但是显示:
Padding is incorrect
这是我要整理的整个文件:
import sys
from Crypto.Cipher import AES
import importlib
try:
importlib.import_module('psutil')
except ImportError:
import pip
pip.main(['install', 'psutil'])
finally:
globals()['psutil'] = importlib.import_module('psutil')
def collect_stats():
try:
cpu = psutil.cpu_percent(interval=1)
memory = psutil.virtual_memory().percent
disk = psutil.disk_usage('/').percent
str_to_send_back = "{} {} {}".format(cpu, memory, disk)
str_to_send_back = str_to_send_back.encode()
str_to_send_back = encrypt(str_to_send_back)
except Exception as e:
print('Oops this error happened in collect_stats() inside client.py: ' + str(e))
def encrypt(message):
obj = AES.new(b'This is a key123', AES.MODE_CBC, b'This is an IV456')
return obj.encrypt(message)
def decrypt(ciphertext):
obj2 = AES.new(b'This is a key123', AES.MODE_CFB, iv)
return obj2.decrypt(ciphertext)
if __name__ == '__main__':
collect_stats()
加密时先填充再加密:
obj.encrypt(pad(message, BLOCK_SIZE))
这让我相信解密时应该先解密,再解密。所以:
obj2.decrypt(unpad(ciphertext, BLOCK_SIZE))
会变成:
unpad(obj2.decrypt(ciphertext), BLOCK_SIZE)
我正在尝试使用 python 进行简单的加密。
这是加密:
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from Crypto.Util.Padding import unpad
BLOCK_SIZE = 32
def encrypt(message):
obj = AES.new(b'This is a key123', AES.MODE_CBC, b'This is an IV456')
return obj.encrypt(pad(message, BLOCK_SIZE))
加密似乎有效 returns 这个:
b'V=\t7I\x99\xa5\x06*\xa1={\x95+\xc1h\xfeY\xc2\xb5\xcf3F:\x88\xa6g\x94d\x87\xd7U'
然而我使用的是解密:
def decrypt(ciphertext):
obj2 = AES.new(b'This is a key123', AES.MODE_CFB, b'This is an IV456')
return obj2.decrypt(unpad(ciphertext, BLOCK_SIZE))
但是显示:
Padding is incorrect
这是我要整理的整个文件:
import sys
from Crypto.Cipher import AES
import importlib
try:
importlib.import_module('psutil')
except ImportError:
import pip
pip.main(['install', 'psutil'])
finally:
globals()['psutil'] = importlib.import_module('psutil')
def collect_stats():
try:
cpu = psutil.cpu_percent(interval=1)
memory = psutil.virtual_memory().percent
disk = psutil.disk_usage('/').percent
str_to_send_back = "{} {} {}".format(cpu, memory, disk)
str_to_send_back = str_to_send_back.encode()
str_to_send_back = encrypt(str_to_send_back)
except Exception as e:
print('Oops this error happened in collect_stats() inside client.py: ' + str(e))
def encrypt(message):
obj = AES.new(b'This is a key123', AES.MODE_CBC, b'This is an IV456')
return obj.encrypt(message)
def decrypt(ciphertext):
obj2 = AES.new(b'This is a key123', AES.MODE_CFB, iv)
return obj2.decrypt(ciphertext)
if __name__ == '__main__':
collect_stats()
加密时先填充再加密:
obj.encrypt(pad(message, BLOCK_SIZE))
这让我相信解密时应该先解密,再解密。所以:
obj2.decrypt(unpad(ciphertext, BLOCK_SIZE))
会变成:
unpad(obj2.decrypt(ciphertext), BLOCK_SIZE)