AES à l'aide de Cryptage en Base64
mon objectif est de faire chiffrer une Chaîne avec AES
Je suis en utilisant Base64 pour le chiffrement, car AES a besoin d'un tableau d'octets en entrée.
De plus je veux que chaque Char(dont le chinois et l'allemand Symboles) pour être stocké correctement
byte[] encryptedBytes = Base64.decodeBase64 ("some input");
System.out.println(new Base64().encodeToString(encryptedBytes));
J'ai pensé à "une entrée" doit être imprimé. Au lieu de "someinpu" est imprimé.
Il est impossible pour moi d'utiliser le soleil.misc.* Au lieu de cela, je suis en utilisant apache.commons.codec
Quelqu'un a une idée de ce qui va mal?
OriginalL'auteur Frederik | 2011-04-08
Vous devez vous connecter pour publier un commentaire.
Oui - "une entrée" n'est pas valide chaîne encodée en base64.
L'idée de base64 est que vous codez binaire données dans texte. Vous décoder ensuite que texte de données à un tableau d'octets. Vous ne pouvez pas simplement décoder n'importe quel texte, comme si c'étaient un base64 message, pas plus que vous pouvez essayer de décoder un fichier mp3 comme une image jpeg.
Chiffrement d'une chaîne doit être de ce processus:
text.getBytes("UTF-8")
)De déchiffrement est alors une question d':
new String(bytes, "UTF-8")
OriginalL'auteur Jon Skeet
Vous ne pouvez pas utiliser Base64 à tour de texte arbitraire en octets, ce n'est pas ce qu'il est destiné à faire.
Au lieu de cela, vous devez utiliser l'UTF8:
OriginalL'auteur SLaks