En regardant l'URL Safe Base 64 Encodage, j'ai trouvé qu'il s'agissait d'une chose très standard. Malgré le nombre copieux de fonctions intégrées que PHP a, il n'y en a pas pour le codage 64 de la base de la sécurité URL. Sur la page manuelle de Contrairement à la fonction PHP ci-dessus, cette version PERL tombe le caractère "=" (égal) caractère entièrement, plutôt que de le remplacer par "," (virgule) comme PHP . Equals est un caractère de rembourrage, de sorte que le module Perl les remplace comme si nécessaire lors du décodage, mais cette différence rend les deux implémentations incompatibles. P> Enfin, la fonction Python urlsafe_b64encode garde le remplissage" = ", invitant quelqu'un à mettre en place Cette fonction Pour supprimer le remplissage qui montre en évidence dans Google Resultats pour 'Python Base64 URL Safe' : P> BASE64_ENCODE () CODE>
, la plupart des commentaires suggèrent d'utiliser Cette fonction, enveloppée avec str .org / ~ kazuho / mime-base64-urlsafe-0.01 / lib / mime / base64 / urlsafe.pm "rel =" nofollow noreferrer "> mime :: base64 :: urlsafe ( Source ), qui effectue le remplacement suivant en interne : p>
from base64 import urlsafe_b64encode, urlsafe_b64decode
def uri_b64encode(s):
return urlsafe_b64encode(s).strip('=')
def uri_b64decode(s):
return urlsafe_b64decode(s + '=' * (4 - len(s) % 4))
5 Réponses :
Pourquoi n'essayez-vous pas d'envelopper dans un urlencode () code>? Documentation ici. P>
Qui utilise un nombre inutile de caractères. Pourquoi pas seulement l'urlencode la chaîne binaire en premier lieu?
Je suggérerais d'exécuter la sortie de base64_encode via Urlencode. Par exemple:
Si vous posez des questions correctes, j'irais avec un codage d'URL approprié par opposition au remplacement arbitraire de caractères. Premier base64-codez vos données, puis encoder en outre des caractères spéciaux tels que "=" avec un codage URL approprié (I.e. %
code>). P>
Je suis en train d'utiliser les fonctions déjà disponibles, mais utilisez UrlenCode () peut ajouter beaucoup de longueur supplémentaire.
Il semble que ce soit une norme, c'est RFC 3548 , section 4, BASE 64 Encodage avec URL et nom de fichier Alphabet Safe EM>: P>
Ce codage est techniquement identique
au précédent, sauf pour le
62: ND et 63: Caractère d'alphabet RD, comme
indiqué dans le tableau 2. P>
blockQuote>
Notez que cela nécessite que votre URL encoder le fichier
+ code> et
/ code> doit être remplacé par
- (moins) code> et
_ (sous-cours) code> respectivement. Toutes les bibliothèques incompatibles doivent être enveloppées afin qu'elles soient conformes à la RFC 3548. P>
(pad) = code> caractères, mais je préfère que sur l'URL codant pour le codage de
+ code> et
/ code> caractères de l'alphabet Standard Base64. P>
Je ne pense pas qu'il y ait bien ou faux. Mais le codage le plus populaire est
'+/=' => '-_.'
+1 pour mentionner Y64 et ajouter une certaine culture à la question