Aller au contenu

Classe CS_EncryptionUtils

Afin de faciliter l'implantation du chiffrement dans vos projets, une classe CS_EncryptionUtils vous sera fournie. Vous êtes libres d'y lire le code à l'intérieur pour comprendre comment il fonctionne.

La classe CS_Encryption est une classe utilitaire qui permet de manipuler le chiffrement et le déchiffrement AES plus facilement qu'avec les fonctions Java.

Pour chiffrer ou déchiffre des données, il faut 2 objets :

  1. Une clé secrète (objet SecretKey)
  2. Un vecteur d'initialisation (objet IvParameterSpec)

Obtention d'une clé secrète

Une clé secrète peut être obtenir à l'aide d'une des 3 fonctions suivantes :

  • public static SecretKey generateKey(LONGUEUR_CLE longueurCle)
    • Obtient une clé secrète générée aléatoirement. La longueur de la clé est choisie parmi 3 valeurs (128, 192 et 256) via un enum nommé LONGUEUR_CLE.
  • public static SecretKey getKeyFromPassword(String password, String salt)
    • Obtient une clé secrète générée à partir d'un mot de passe et d'un sel. Un sel sert à ajouter du bruit à l'algorithme et à renforcir le chiffrement. L'utilisation d'un mot de passe et d'un sel spécifique donnera toujours la même clé secrète.
  • public static SecretKey getKeyFromBase64String(String b64secretKey)
    • Obtient une clé secrète générée à partir d'une chaîne de caractères encodée en base64. Utile pour récupérer une clé enregistrée dans un fichier texte.

Obtention d'un vecteur d'initialisation

Le vecteur d'initialisation s'effectue à l'aide d'une des 3 fonctions suivantes :

  • public static IvParameterSpec generateIv()
    • Obtient un vecteur d'initialisation généré aléatoirement.
  • public static IvParameterSpec generateIv(byte[] iv)
    • Obtient un vecteur d'initialisation généré à partir d'un ensemble de bits.
  • public static IvParameterSpec generateIv(String base64String)
    • Obtient un vecteur d'initialisation généré à partir d'une chaîne de caractères encodée en base64.

Chiffrer et déchiffrer une chaîne de caractère

Les fonctions encrypt et decrypt permettent de chiffrer et déchiffrer une chaîne de caractères à partir d'une clé secrète et d'un vecteur d'initialisation. Pour simplifier le traitement des données, le format base64 sera utilisé pour toutes les chaînes chiffrées.

Fonctions utilitaires

Des fonctions utilitaires ont été ajoutées pour aider à obtenir la clé secrète et le vecteur d'initialisation. Ces fonctions, getBase64SecretKey et getBase64Iv retourneront l'équivalent respectif en base64.