[英]Incorrect padding error while b64decoding
嗨,我有以下代碼可以對某些數據進行編碼和解碼。 但是即使在我已經添加了填充的情況下,在解碼數據時它也會給我帶來不正確的填充錯誤。 守則是; 編碼方式:
plain = str(data)
mismatch = len(plain) % 16
if mismatch != 0:
padding = (16 - mismatch) * ' '
plain += padding
secret_key = '3216549874561230'
cipher = AES.new(secret_key, AES.MODE_ECB)
encoded = base64.b64encode(cipher.encrypt(plain))
該編碼數據通過鏈接發送。 我正在從URL的ID參數獲取該數據。 解碼:
secret_key = '3216549874561230'
data = request.GET.get('ID')
cipher = AES.new(secret_key, AES.MODE_ECB)
decoded = cipher.decrypt(base64.b64decode(data))
print "-------------decoded-------------",decoded
data = {'id': decoded}
請幫助我,我是新手。 並且已經非常感謝你們。
解決您的問題的最佳解決方案是不要自己執行此類操作,特別是因為涉及安全性。 使用django-allauth之類的庫。
您的問題是將base 64字符串直接放入URL中,其中某些字符具有特殊含義。 在示例中的注釋中,在URL參數中, +
表示為空格。 它需要正確地轉義,例如urlencode({'ID': 'fIG+YkFHVHSib46tqREppw=='})
給出ID=fIG%2BYkFHVHSib46tqREppw%3D%3D
,這將在另一側正確解釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.