簡體   English   中英

b64decoding時出現錯誤的填充錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM