Django urlsafe base64 décodage avec déchiffrement

Je suis en train d'écrire mon propre système de captcha pour l'inscription de l'utilisateur. J'ai donc besoin de créer l'URL pour la réception généré captcha photos. Génération ressemble à ceci:

_cipher = cipher.new(settings.CAPTCHA_SECRET_KEY, cipher.MODE_ECB)
_encrypt_block = lambda block: _cipher.encrypt(block + ' ' * (_cipher.block_size - len(block) % _cipher.block_size)) 
#...
a = (self.rightnum, self.animal_type[1])
serialized = pickle.dumps(a)
encrypted = _encrypt_block(serialized)
safe_url = urlsafe_b64encode(encrypted)

Mais alors je suis en train de recevoir cette clé via une requête GET à la vue de la fonction, il échoue sur urlsafe_b64decode() avec "mappage de caractères doit retourner un entier, Aucun ou unicode" erreur:

def captcha(request):
  try:
    key = request.REQUEST['key']
    decoded = urlsafe_b64decode(key)
    decrypted = _decrypt_block(decoded)
    deserialized = pickle.loads(decrypted)
    return HttpResponse(deserialized)
  except KeyError: 
    return HttpResponseBadRequest()

J'ai constaté que sur la sortie de urlsafe_b64encode il y a un str, mais demande GET retourne un objet unicode (c'est néanmoins une chaîne de droite). Str() n'a pas aidé (il renvoie une erreur de décodage profondément à l'intérieur de django), et si j'utilise la clé.repr il fonctionne, mais decryptor ne fonctionne pas avec un message d'erreur "les chaînes d'Entrée doit être un multiple de 16 ans, en longueur".
À l'intérieur d'un fichier de test toute cette construction fonctionne parfaitement, je ne peux pas comprendre, ce qui est mal?

source d'informationauteur Enchantner