Java: Base64 Encode une Chaîne en utilisant une clé
Salut j'ai des données et une clé (les chaînes). Les besoins en matière de données à coder à l'aide de la clé à l'aide de Base64. Peut quelqu'un me donner un exemple de code.
- On n'a pas base64 encode avec une "clé". Il (base64) est un schéma de codage, pas un algorithme de chiffrement. Cela étant dit, je suis confus avec ce que le but réel est - peut-être que le titre est très mal choisi.
Vous devez vous connecter pour publier un commentaire.
Base64 n'est pas pour "encodage avec une clé". C'est tout simplement un schéma de codage: vous pouvez utiliser Base64 pour crypter et décrypter des chaînes sans aucun extra. C'est juste pour les très (très) la sécurité de base, les usages.
vous pouvez xor les données avec votre clé, puis de l'encoder en base64.
et puis vous coder 'sortie' base64 à l'aide de la fonction de quelque part
Si vous avez besoin d'encoder en Base64 l'aide d'une clé, alors effectivement il n'est pas difficile à faire, même si elle n'est pas définie dans la norme.
Base64 utilise un alphabet de 64 symboles. Le premier 62 symbolss sont les lettres majuscules et minuscules de l'alphabet anglais, en plus des chiffres de 0 à 9. Les 2 derniers caractères les plus couramment sont les + et /, mais ils peuvent varier entre la mise en œuvre.
Donc comprenez maintenant, que si vous cassez votre chaîne en morceaux, et de les regrouper à l'aide de 6 bits au lieu de 8 par symbole, vous toujours être capable de trouver un symbole dans l'alphabet, parce que les 6 bits les nombres ont exactement 64 différentes valeurs possibles. Base64 juste énumère les symboles de %000000 (0) pour 111111 (63). Mais vous pouvez utiliser une clé au cours de cette recherche de symbole. Dire votre 6 nombre de bits est %000011 (3), il serait donc de l'indice de la 4ème symbole dans l'alphabet. Mais vous pouvez maintenant utiliser votre clé de modifier cet indice, le déplacer à gauche ou à droite (par exemple) le nombre de postes égal au code ASCII de votre clé de caractère (8 bits). Chaque fois que votre index sort de la plage (en dessous de 0 ou au-dessus de 63) vous venez de se téléporter vers le côté opposé de la plage. Et si vous avez déplacé l'index droit pendant l'encodage, l'utilisation à gauche en direction de décodage (et vice versa). Fondamentalement, vous êtes de brouillage de la recherche de symbole avec un motif défini par les caractères de votre clé.
Là vous allez, il vous suffit d'utiliser le codage Base64 avec une clé (au lieu que la première incrustation de l'entrée de l'encodage). Vous êtes les bienvenus.
Et puisque vous avez demandé un exemple de code ci-dessous est un échantillon rapide en Pascal Objet, que j'ai écrit. Ce code pourrait être plus rapide si vous allouer de la mémoire pour la chaîne finale, puis d'écrire en elle, au lieu de la concaténation de la chaîne dans une boucle, qui ré-alloue de la mémoire à chaque fois, mais que vous pouvez déterminer vous-même, si vous avez besoin d'une meilleure performance:
Remarque la fonction ShiftSymbolIndex - c'est la recherche de symbole scrambler, il peut se déplacer symbole de l'index à droite ou à gauche. J'ai utiliser le droit dans le codeur, et à gauche dans le codeur, mais il est tout à vous.
Si vous omettez l'argument-clé dans Encode64 ou Decode64 fonction (ou si vous passez une chaîne vide à la clé), alors vous allez vous retrouver avec une valeur par défaut de l'encodage Base64/décodage.
Aussi, ce codeur n'ajoute pas de padding ("=" caractères) à la chaîne encodée en base64. Le rembourrage n'est pas nécessaire pour décoder, à moins que votre décodeur fonctionne dans un mode strict (ce codeur n'est pas) - mais que, vous pouvez déterminer vous-même.
Vous pouvez utiliser apache commons Codec bibliothèque
Base64
classe. Voici la page d'accueil pour elle et le page de téléchargement.Vous pouvez utiliser un binaire symétrique algorithme de chiffrement tels que Twofish ou RC4 qui utilise une telle clé, puis l'encoder le résultat en base 64.
Base64 n'inclut pas la fonctionnalité chiffrer avec la clé. Vous pouvez utiliser AES, DES, etc pour chiffrer en premier et ensuite l'utiliser pour encoder en base64.