Coder et décoder en Base64#
Problème#
Je voudrais encoder une string en base64.
Ou inversement, je voudrais décoder une string déjà en base64 et convertir le résultat en string.
Solution#
Encoder#
import (
"encoding/base64"
)
secretEnClair: "Secr3t"
secret: base64.Encode(null, secretEnClair)
Résultat :
➜ cue export
{
"secretEnClair": "Secr3t",
"secret": "U2VjcjN0"
}
Décoder#
import (
"encoding/base64"
)
secret: "U2VjcjN0"
secretEnClair: "\(base64.Decode(null, secret))"
Résultat :
{
"secret": "U2VjcjN0",
"secretEnClair": "Secr3t"
}
Discussion#
L'encodage en base64 est facile. Il faut utiliser base64.Encode(). Comme indiqué dans la documentation, le premier argument est forcément null.
Le décodage depuis base64 pose plusieurs problèmes.
- le résultat est en
[]byte. Lors d'uncue exportau format JSON ou autre, Cue convertit les[]byteen base64. On a donc un réencodage inattendu et non souhaité. Cela peut même donner l'impression qu'il ne s'est rien passé. - le résultat est en
[]bytealors que nous souhaitons unstring. Il ne semble pas exister de fonction de conversion. Il faut donc utiliser l'interpolation qui se charge de cette conversion. - comme pour l'encodage, la fonction
base64.Decode()prend deux arguments dont le premier est égalementnull(cf la documentation)