cryptageRSA

cryptageRSACécile Picard-Limpens [x]

La «proglet» cryptageRSA.

Cliquer ici pour faire l'activité.
Cliquer ici pour lire le tutoriel.
Cette proglet permet de manipuler les concepts liés à l'encryptage/décryptage par clés publique et privée, RSA.
La cryptologie, science du secret, englobe la cryptographie — le codage secret d'un message — et la cryptanalyse — le décodage d'un message codé.
Le principe de la cryptographie consiste à définir une transformation des symboles d'un langage (les lettres ou les mots par exemple) qui soit difficilement inversible, de telle sorte que retrouver le mot original à partir du mot codé devienne une opération difficile à effectuer.
Il existe deux grandes familles d'algorithmes de cryptographie : les algorithmes symétriques (à clé secrète) et les algorithmes asymétriques (à clé publique). Le système RSA est un système de cryptographie à clé publique donc asymétrique.
L'intérêt de cette manipulation est de faire passer la non-symétrie du processus: autrement dit, tout le monde peut encrypter (par la clé publique), mais seule une personne pourra décrypter (à l'aide de la clé privée).
Pour manipuler les notions et outils du cryptage, il faut utiliser la construction javascool. Toutes ces fonctions sont accessibles par l'interface, ou par des fonctions programmable:

// Créer une clé privée et une clé publique pour le codage et décodage de messages:

BigInteger keys[] = createKeys()
où:
  • est retourné les clés sous forme d'un tableau de 3 BigInteger, keys[0] est la clé privée D, et (keys[1],keys[2]) sont les clés publiques (E, N).

// Encrypter un message à l'aide d'une clé (publique):

BigInteger crypt = encrypt(String message, BigInteger pk1, BigInteger pk2)
où:
  • message est le message à encrypter, à inscrire entre "" puisque c'est une chaine de caractères.
  • pk1 est la clé publique, 1ere partie, c'est à dire E.
  • pk2 est la clé publique, 2nde partie, c'est à dire N.
  • est retourné le message encrypté sous forme de chiffres.

// Décrypter un message à l'aide de clés:

String message = decrypt(BigInteger crypt, BigInteger[] keys)
où:
  • crypt est le message encrypté sous forme de chiffres.
  • keys sont les clés, publique et privées, sous forme de vecteur à 3 entrées, comme celui donné par createKeys().
  • est retourné le message decrypté en caractères.
Un exemple d'utilisation se fait lors du lancement de la proglet avec une fenêtre d'interaction.
Un exemple de programme d'utilisation est disponible ici.
Cette «proglet» est un composant logiciel ouvert dont documentation et code-source sont disponibles ici