Futures implémentations - falcoda/Projet-DevWeb-III GitHub Wiki
Cryptage de l'adresse mail et du mot de passe
Librairie crypto
Tout d'abord pour pouvoir crypter une information dans le serveur, nous avons besoin d'une librairie de cryptage. Nous avons fait le choix de prendre crypto. Crypto va nous servir a crypter l'adresse mail et le mot de passe afin de ne pas les afficher en clair dans les cookies.
Pour l'installer il faut écrire npm intall crypto
dans la console du serveur node js. Il faut ensuite importer la librairie en écrivant import crypto from "crypto";
dans notre serveur.js
Initialisation de la clé de cryptage et du vecteur d'initiation
Pour crypter des informations, nous avons besoin d'une clé de cryptage qui sera invisible à l'utilisateur (donc dans le serveur) et d'un vecteur d'initiation qui rendra aléatoire la clé à chaque fois que l'utilisateur se connecte. Cela se fera avec ce code:
var key = "423F4528482B4D6250655368566D5971";
const iv = crypto.randomBytes(16);
Fonction de cryptage
Pour crypter une information, nous le faisons au niveau de la connexion et de l'inscription dans le serveur via cette fonction:
function encrypt(text) {
var encrypt = crypto.createCipheriv('aes-256-ctr', key, iv);
var theCipher = encrypt.update(text, 'utf8', 'base64');
theCipher += encrypt.final('base64');
return theCipher;
}
Fonction de décryptage
Pour décrypter l'information, nous le faisons au niveau de tous les appels à la base de données qui ont un rapport avec les identifiants via cette fonction:
function decrypt(encrypted) {
var decrypt = crypto.createDecipheriv('aes-256-ctr', key, iv);
var s = decrypt.update(encrypted, 'base64', 'utf8');
s += decrypt.final('utf8');
console.log(s);
return s;
}