我正在尝试加密一个字符串,稍后将为密码函数解密。
但是,当我尝试加密它时,我收到一个错误,说输入字符串必须是16的倍数。
这是我的加密代码,它使用库Jasypt2Python。
def test_basic_encryption(self):
try:
self.ciphertext = "encrypt123"
self.j2p = J2PEngine(self.ciphertext)
given_ciphertext = self.j2p.encrypt('mypw123.')
except Exception:
e_str = traceback.format_exc()
print(e_str)
知道如何解决此问题或将密码设为16的倍数?
答案 0 :(得分:0)
大多数对称密码(如AES)都可以作为所谓的分组密码。他们“逐块”加密数据。现代算法使用128位块--16个字节。
填充数据意味着例如将字符串“hello”(5字节ASCII)扩展为16字节。一种可能性是添加11个字节,每个字节值为11.如果解密数据,则必须查看最后一个字节(11)并从末尾删除此字节数。如果您的文本已经是16的倍数,则仅使用填充添加新块(每个字节值为16)。
查看规范的“PKCS5填充”。