Question

Je pense que cela doit être une question stupide, mais pourquoi les résultats de urlsafe_b64encode () se terminent-ils toujours par un '=' pour moi? '=' L'URL n'est-elle pas sécurisée?

from random import getrandbits
from base64 import urlsafe_b64encode
from hashlib import sha256
from time import sleep

def genKey():
   keyLenBits = 64
   a = str(getrandbits(keyLenBits))
   b = urlsafe_b64encode(sha256(a).digest())
   print b

while 1:
   genKey()
   sleep(1)

sortie:

DxFOVxWvvzGdOSh2ARkK-2XPXNavnpiCkD6RuKLffvA=
xvA99ZLBrLvtf9-k0-YUFcLsiKl8Q8KmkD7ahIqPZ5Y=
jYbNK7j62KCBA5gnoiSpM2AGOPxmyQTIJIl_wWdOwoY=
CPIKkXPfIX4bd8lQtUj1dYG3ZOBxmZTMkVpmR7Uvu4s=
HlTs0tBW805gaxfMrq3OPOa6Crg7MsLSLnqe-eX0JEA=
FKRu0ePZEppHsvACWYssL1b2uZhjy9UU5LI8sWIqHe8=
aY_kVaT8kjB4RRfp3S6xG2vJaL0vAwQPifsBcN1LYvo=
6Us3XsewqnEcovMb5EEPtf4Fp4ucWfjPVso-UkRuaRc=
_vAI943yOWs3t2F6suUGy47LJjQsgi_XLiMKhYZnm9M=
CcUSXVqPNT_eb8VXasFXhvNosPOWQQWjGlipQp_68aY=
Était-ce utile?

La solution

Base64 utilise '=' pour le remplissage. Votre longueur de bit de chaîne n'est pas divisible par 24, elle est donc complétée par '='. A propos, '=' devrait être une URL sûre car il est souvent utilisé pour les paramètres dans les URL.

Voir cette discussion , également.

Autres conseils

Le '=' est pour le rembourrage. Si vous souhaitez transmettre la sortie en tant que valeur d'un paramètre d'URL, vous devrez d'abord l'échapper, afin que le remplissage ne soit pas perdu lors de la lecture ultérieure de la valeur.

import urllib
param_value = urllib.quote_plus(b64_data)

Python ne fait que suivre la RFC3548 en autorisant le '=' pour le remplissage, même s'il semble qu'un caractère plus approprié devrait le remplacer.

Je m'attendrais à ce qu'un analyseur d'URI ignore les "" =". dans la partie valeur d'un paramètre.

Les paramètres d'URI sont: & amp; " , [nom], " = " ;, [valeur], ensuite, un signe égal dans la partie valeur est inoffensif. Une esperluette non échappée a plus de potentiel pour casser l'analyseur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top