Comme exercice de programmation, je dois décrypter un message. Les seuls indices que j'ai, c'est qu'il semble être:
Je ne veux pas de solution, je me demande simplement si cette séquence d'occurrences pour le signe égal fournit un indice ou non.
Je vous remercie.
Les signes = se rapportent à la longueur de la chaîne encodée en Base64 . Essentiellement, dans la forme probablement la plus courante de Base64, = est utilisé comme caractère de remplissage pour garantir que le dernier bloc peut être décodé correctement.
Base64 n'est pas un chiffrement - il n'y a pas de cachette - mais est souvent utilisé pour permettre l'envoi de données binaires sous forme de texte uniquement. Tous les caractères utilisés dans Base64 seront collés correctement et peuvent être saisis à l'aide d'un clavier sans touches de modification au-delà de la touche Maj.
Comme mentionné ci-dessus, Base64 n'est pas un cryptage mais un encodage. Comme vous pouvez le voir sur le RFC qui a spécifié la norme, base64 fonctionne de la manière suivante.
Maintenant, il y a une chance que vous atteigniez la fin du flux et que vous n'ayez pas de groupe 24 bits (s mod 6! = 0) . Si cela se produit, vous ajoutez des zéros à la fin de votre entrée, jusqu'à ce que vous ayez un nombre entier de groupes de 6 bits.
Étant donné que votre flux d'entrée est ASCII encodé, il est donc composé de caractères 8 bits, il n'y a que deux cas où vous vous retrouvez dans le scénario ci-dessus.
1) Vous avez 8 bits dans le dernier groupe
2) Vous avez 16 bits dans le dernier groupe
Dans le premier cas, 4 zéros sont ajoutés (vous donnant 12 bits) et la sortie serait de deux caractères (2 * 6 bits = 12 bits) encodés en fonction de l'alphabet, et deux caractères de remplissage "="
Dans le deuxième cas, 2 zéros seraient ajoutés (vous donnant un total de 18 bits) et la sortie serait de trois caractères (3 * 6 bits = 18 bits) et un caractère de remplissage "=".
C'est ainsi que parfois vous vous retrouvez avec un, deux ou aucun "=" à la fin du texte encodé. Pour plus d'informations, vous devriez vraiment lire le RFC qui définit ce standard et l'entrée wikipedia qui s'y rapporte.
Il existe plusieurs autres systèmes de codage qui utilisent le =
signer certains comprennent:
ESAB46 (BASE64 à l'envers)
ATOM128
MEGAN35
FERON74
Comme cela a déjà été dit, le =
est un remplissage/tampon pour indiquer la longueur du décodeur. C'est notamment la raison pour laquelle les cryptologues recherchent une meilleure méthode de mise en mémoire tampon, car cela =
est un cadeau mort.