Comme le dit son nom, le Base 64 est une façon de voir les données en base 64. Plutôt que de compter de 1 à 10, ou à 16, nous comptons de 1 à 64 avec un alphabet à 64 caractères. Un 65ème caractère permet de terminer les séquences Base 64, c'est le signe "=". L'alphabet Base 64 comprend les lettres minuscules, majuscules, les chiffres, ainsi que les signes "+" et "/", soit effectivement 64 caractères différents. Le base 64 utilise une représentation binaire à 6 bits, ce qui permet bien d'avoir 64 états différents.
Pour convertir un texte en base64, on sépare d'abord le texte en "morceaux" de 24 bit (soit 3 octets). Une fois ces morceaux crées, on va attribuer tous les 6 bits une valeur base 64. Par exemple pour le mot "md5" :
ASCII : m d 5
Binaire : |011011 01|0110 0100|00 110101|
Base 64 : b W Q 1
La correspondance au mot "md5" en base est donc "bWQ1".
Maintenant, comment faire quand il ne reste pas exactement des multiples de 6 bits lorsque l'on a crée les morceaux de 24 bits ? Et bien nous complétons les bits manquants avec des bits "0". Par exemple pour "sha1", on encrypte bien les trois premières lettres "sha", il reste ensuite un octet, qui n'est pas multiple de 6. Nous allons donc lui ajouter 4 "0" bits (8 + 4 = 6*2 = 12 bits). Ensuite nous lui ajouterons deux signes "=" pour rajouter les deux caractères manquants pour atteindre les 24 bits.
Cela signifie que vous pouvez savoir en regardant une chaîne base 64 si le dernier morceau contenait 1, 2 ou 3 octets. En effet, si il restait 3 octets, c'est bien multiple de 6 donc pas besoin de rajouter des "=" à la fin. Si il n'en reste qu'un, comme dit précédement vous devrez rajouter deux signes "=". S'il en reste deux, vous devrez rajouter un signe "=".