jCryption2: Une utilisation plus personnalisée de jCryption

Suite à la sortie de jCryption 2.0 qui ajoutes les mêmes fonctionnalités, je ne met plus à jour cette librairie.

jCryption est une petite application JavaScript utilisant jQuery à ajouter à votre site qui permet de crypter un formulaire de données à l’aide d’un système de clé publique/clé privée. Ainsi, tout ce qui circule sur le réseau est protégé! Cela peut être utile lorsque qu’il vous est impossible de mettre en place un accès HTTPS ou lorsque le client (le visiteur) ne supporte pas le HTTPS mais a le JavaScript.

Le problème, c’est que à vouloir tout faire, jCryption fait trop. En effet, en deux lignes de code, jCryption récupère les champs du formulaire, récupère les clés de cryptage, crypte les données, les compacte puis les envoi à l’attention du script décrit dans l’attribut action de la balise <form>.

C’est pourquoi j’ai décidé de créer un jCryption2, qui ne vise en aucun cas à remplacer jCryption, ou à se prétendre supérieur mais plutôt à être tout aussi accessible, ce qui permet de choisir entre la simplicité (jCryption) ou la personnalisation (jCryption2). Ainsi, jCryption permet de récupérer les clés de cryptage de n’importe quelle façon et d’envoyer les données cryptées de n’importe quelle façon: vous devez créer une instance de jCryption2Key qui décrit la clé publique et vous devez définir un callback (une fonction de retour) lorsque l’encryptage sera terminée, avec comme seul paramètre la chaine cryptée.

En tout aussi peu de lignes, nous avons un système permettant de crypter les données envoyées de manière beaucoup plus personnalisée car vous pouvez récupérer les clés d’un fichier FTP par exemple, puis envoyer la chaine cryptée vers un socket, à l’aide de jSocket par exemple !


Mise en place de jCryption2

Il vous suffit de télécharger le fichier JavaScript de jCryption2, dans la bibliothèque de téléchargement de jCryption2:

Une fois téléchargé, incluez ce fichier dans votre page web, après jQuery. Vous pouvez dès à présent l’utiliser, comme le montre l’exemple ci-dessous.

Exemple d’utilisation de jCryption2

Pour ce petit exemple, vous allons dire que vous avons une chaine de caractères reçue de n’importe où, sous forme JSON qui contient des informations à propos de la clé de cryptage. De plus, notre fonction de callback affiche juste à l’écran la donnée cryptée, au lieu de l’envoyer. Pour savoir comment décrypter cette donnée, voyez le paragraphe suivant, comment décrypter jCryption2.

  • Nous allons récupérer les données de la clé publique, grâce à la chaine de caractère key_str représentant la clé publique en JSON.

    Ainsi, nous avons une variable keys qui contient les informations nécessaires à la clé pour qu’elle puisse être utilisée pour crypter les données.
  • Maintenant, nous allons fixer un callback pour l’encryptage puis récupérer les données d’un formulaire puis les crypter.

    Une fois le cryptage fini, jCryption2 va appeller le encryptedCallback en lui donnant la chaine correspondant à tous les élements du formulaire, cryptés.

Comment décripter les données de jCryption2

Cela se passe de la même manière qu’avec jCryption, vous devez avoir des informations supplémentaires à propos de la clé utilisée pour pouvoir décripter. C’est pourquoi, passer par une session comme le fait jCryption est une bonne idée, mais dans le cas où vous n’utilisez pas PHP dans les deux cas, vous pouvez passer par une base de données ou un fichier temporaire…

Bref, pour décripter, télécharger le fichier PHP de jCryption, ça se passe de la même manière!

Ici, $crypted_str est une chaine de caractère, la chaine de caractère générée par le jCryption2 et $keys_object est la réprésentation en tableau du couple de clé générée par la fonction generateKeypair de jCryption, comme montré dans le paragraphe suivant.

Génération d’une clé pour jCryption2

La génération des clés peut aussi se faire grâce à la classe PHP de jCryption, comme le montre cet exemple:

Astuce: Conservez cette donnée en la compressant grâce à la fonction serialize.

N’hésitez pas à me faire des retour sur votre utilisation et/ou vos suggestions/critiques !

facebooktwittergoogle_plusredditpinterestlinkedinmail

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">