Cryptographie en TypeScript : chiffrement et hachage

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Cryptographie en TypeScript : chiffrement et hachage de données



Dans le développement web moderne, la sécurité des données est un aspect crucial. TypeScript, en tant que surcouche fortement typée de JavaScript, offre des outils puissants pour implémenter des opérations cryptographiques. Dans cet article, nous examinerons les principaux algorithmes de chiffrement et de hachage disponibles en TypeScript, et montrerons comment les appliquer en pratique.



Module crypto intégré et bibliothèques



Node.js fournit le module intégré crypto, qui est entièrement compatible avec TypeScript. Pour les applications navigateur, on utilise l'API Web Crypto. Pour des tâches plus complexes, la bibliothèque crypto-js est recommandée, car elle fonctionne à la fois dans Node.js et dans le navigateur.



Installation des paquets nécessaires :



npm install crypto-jsnpm install @types/crypto-js --save-dev


Chiffrement symétrique AES



L'algorithme AES (Advanced Encryption Standard) est le chiffrement symétrique le plus populaire. Il utilise la même clé pour chiffrer et déchiffrer les données.



Exemple d'implémentation AES-256 en TypeScript :



import CryptoJS from 'crypto-js';

const SECRET_KEY = 'my-strong-secret-key-32chars';

function encryptAES(text: string): string { const encrypted = CryptoJS.AES.encrypt(text, SECRET_KEY); return encrypted.toString();}

function decryptAES(ciphertext: string): string { const decrypted = CryptoJS.AES.decrypt(ciphertext, SECRET_KEY); return decrypted.toString(CryptoJS.enc.Utf8);}

// Utilisationconst originalText = 'Секретные данные для защиты';const encrypted = encryptAES(originalText);console.log('Зашифровано:', encrypted);

const decrypted = decryptAES(encrypted);console.log('Расшифровано:', decrypted);


Chiffrement asymétrique RSA



RSA utilise une paire de clés : une clé publique et une clé privée. La clé publique sert à chiffrer les données, et la clé privée à les déchiffrer. C'est idéal pour la transmission sécurisée de données.



Exemple avec le module crypto de Node.js :



import * as crypto from 'crypto';

function generateRSAKeys(): { publicKey: string; privateKey: string } { const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', { modulusLength: 2048, publicKeyEncoding: { type: 'spki', format: 'pem' }, privateKeyEncoding: { type: 'pkcs8', format: 'pem' } }); return { publicKey, privateKey };}

function encryptRSA(plainText: string, publicKey: string): string { const buffer = Buffer.from(plainText, 'utf-8'); const encrypted = crypto.publicEncrypt(publicKey, buffer); return encrypted.toString('base64');}

function decryptRSA(cipherText: string, privateKey: string): string { const buffer = Buffer.from(cipherText, 'base64'); const decrypted = crypto.privateDecrypt(privateKey, buffer); return decrypted.toString('utf-8');}

// Exemple d'utilisationconst keys = generateRSAKeys();const message = 'Конфиденциальное сообщение';const encryptedRSA = encryptRSA(message, keys.publicKey);const decryptedRSA = decryptRSA(encryptedRSA, keys.privateKey);

console.log('Исходное:', message);console.log('Расшифрованное:', decryptedRSA);


Hachage de données



Le hachage est une transformation unidirectionnelle de données en une chaîne de longueur fixe. Contrairement au chiffrement, un hachage ne peut pas être inversé. Principales utilisations :



  • Stockage de mots de passe — on stocke le hachage au lieu du mot de passe
  • Vérification de l'intégrité des données — comparaison des hachages de fichiers
  • Signatures numériques — confirmation de la paternité


SHA-256



L'algorithme le plus courant de la famille SHA-2 :



import CryptoJS from 'crypto-js';

function hashSHA256(data: string): string { return CryptoJS.SHA256(data).toString();}

Recommendations