파이썬이나 암호에 대한 많은 지식이 없기 때문에 해결책을 찾을 수 없었지만 문제는 패딩과 관련이 있다고 생각합니다. 이 스크립트는 두 가지 기능을 사용하여 암호를 가져오고 암호를 해독합니다. 나는 오류가 점점 오전 : 나는 패딩 함께 할 수있는 뭔가가 생각파이썬의 암호화를위한 패딩 AES
ValueError: The length of the provided data is not a multiple of the block length.
합니다.
키 : 8$4Tws[14R!,0Ba|
암호화 된 패스 : YTj+F1oo5OUNBgKyfifN/2R2zvFLFHbXu4Te2+OvBJ7JRae1DMVJR42qK0GucmiUyTGdtQzFSUeNqitBrnJolMkxp7UMxUlHeaor
기능 :
from django.utils.encoding import force_bytes, force_text
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
@property
def password(self):
"""Password getter."""
return decrypt(self._password)
def decrypt(ct):
backend = default_backend()
key = param_tools.get_global_parameter("secret_key", app="core")
print(key)
cipher = Cipher(
algorithms.AES(force_bytes(key)), modes.ECB(), backend=backend)
ct = base64.b64decode(force_bytes(ct))
decryptor = cipher.decryptor()
clear = decryptor.update(ct) + decryptor.finalize()
return force_text(clear.rstrip(b" "))
당신이 도와 주실 수
다음은 스크립트에 의해 사용되는 값입니다? 덕분에
아마도 : https : // stackoverflow.com/questions/17773450/왜 - 모든 - 입력 - 투 - 아이즈 - 16의 배수' – mbieren
제공된 '암호화 된 패스 75 바이트를 얻는다. 75 바이트는 AES에서 요구하는 16의 배수가 아닙니다. 제공된 '암호화 된 패스'에 문제가 있거나 암호화/인코딩 방법에 대한 이해가 있습니다. –
감사합니다 얘들 아 .. @ EbbeM.Pedersen 스크립트가 암호를 암호화하는 데 동일한 절차를 사용한 경우 좋은 점은 결과가 유효하고 해독 가능해야합니다. 맞습니까? 스크립트를 실행하는 동안 방금 인쇄 한 값입니다. 그래서 나는 또한 암호화 측을 검사 할 것이고,이 값들은 DB에 저장되고이 스크립트에 의해 암호 해독에 사용되어 어딘가에서 엉망이 될 것입니다. – InToSSH