"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Sécurisation des données avec le chiffrement et le déchiffrement RSA sur toutes les plateformes

Sécurisation des données avec le chiffrement et le déchiffrement RSA sur toutes les plateformes

Publié le 2024-11-08
Parcourir:559

Securing Data with RSA Encryption and Decryption Across Platforms

Introduction au chiffrement RSA

Dans le paysage numérique actuel, la sécurisation des données sensibles est cruciale pour les individus comme pour les organisations. Le cryptage RSA (Rivest-Shamir-Adleman) s'impose comme une solution robuste pour protéger les données. Il s’agit d’un algorithme de chiffrement asymétrique, ce qui signifie qu’il utilise une paire de clés : une clé publique pour le chiffrement et une clé privée pour le déchiffrement. L'un des principaux avantages du cryptage RSA est que la clé privée n'a jamais besoin d'être partagée, ce qui minimise le risque qu'elle soit compromise.

Cet article explique comment utiliser le chiffrement RSA dans trois langages de programmation populaires : JavaScript, Python et PHP, ce qui facilite la sécurisation des données dans les applications multiplateformes.

Chiffrement et déchiffrement multiplateforme : le scénario

Imaginez que vous créez une application Web dans laquelle des informations sensibles (telles que des données d'authentification ou des informations personnelles) doivent être transmises en toute sécurité entre le client (front-end) et le serveur (back-end). Par exemple, vous pouvez chiffrer un message côté client en JavaScript, puis le déchiffrer sur le serveur en utilisant Python ou PHP.

RSA est bien adapté à ce scénario car il offre la flexibilité du chiffrement dans une langue et du déchiffrement dans une autre, garantissant ainsi la compatibilité multiplateforme.

Implémentation RSA : JavaScript, Python et PHP

JavaScript (Next.js avec JSEncrypt)
Cryptage :

import JSEncrypt from 'jsencrypt';

// Function to encrypt a message using a public key
const encryptWithPublicKey = (message) => {
  const encryptor = new JSEncrypt();
  const publicKey = process.env.NEXT_PUBLIC_PUBLIC_KEY.replace(/\\n/g, "\n");
  encryptor.setPublicKey(publicKey);
  const encryptedMessage = encryptor.encrypt(message);
  return encryptedMessage;
};

Déchiffrement :

import JSEncrypt from 'jsencrypt';

// Function to decrypt a message using a private key
const decryptWithPrivateKey = (encryptedMessage) => {
  const decryptor = new JSEncrypt();
  const privateKey = process.env.PRIVATE_KEY.replace(/\\n/g, "\n");
  decryptor.setPrivateKey(privateKey);
  const decryptedMessage = decryptor.decrypt(encryptedMessage);
  return decryptedMessage;
};

Explication:

Chiffrement à clé publique : La bibliothèque JSEncrypt chiffre le message à l'aide de la clé publique. Cela garantit que seule la clé privée correspondante peut le déchiffrer.
Déchiffrement de la clé privée : Le message est déchiffré avec la clé privée, qui est stockée en toute sécurité dans une variable d'environnement.
Considérations de sécurité : En utilisant RSA, nous garantissons que les données envoyées par le client sont cryptées et sécurisées.

Python (utilisant la bibliothèque rsa)
Cryptage :

import rsa
import base64

def encrypt_with_public_key(message: str, public_key_str: str) -> str:
    public_key = rsa.PublicKey.load_pkcs1_openssl_pem(public_key_str.encode())
    encrypted_message = rsa.encrypt(message.encode(), public_key)
    return base64.b64encode(encrypted_message).decode()

Déchiffrement :

import rsa
import base64

def decrypt_with_private_key(encrypted_message: str, private_key_str: str) -> str:
    private_key = rsa.PrivateKey.load_pkcs1(private_key_str.encode())
    encrypted_bytes = base64.b64decode(encrypted_message.encode())
    decrypted_message = rsa.decrypt(encrypted_bytes, private_key)
    return decrypted_message.decode()

Explication:

Cryptage par clé publique : Le message est crypté à l'aide d'une clé publique, garantissant que seul le détenteur de la clé privée prévu peut le déchiffrer.
Encodage Base64 : Après le cryptage, le message est codé en Base64 pour garantir la compatibilité avec la transmission de texte.
Déchiffrement par clé privée : La clé privée est utilisée pour déchiffrer le message crypté encodé en Base64, garantissant ainsi la confidentialité.

PHP (avec OpenSSL)
Cryptage :

function encrypt_with_public_key($message) {
    $publicKey = getenv('PUBLIC_KEY');
    openssl_public_encrypt($message, $encrypted, $publicKey);
    return base64_encode($encrypted);
}

Déchiffrement :

function decrypt_with_private_key($encryptedMessage) {
    $privateKey = getenv('PRIVATE_KEY');
    $encryptedData = base64_decode($encryptedMessage);
    openssl_private_decrypt($encryptedData, $decrypted, $privateKey);
    return $decrypted;
}

Explication:

Cryptage par clé publique : La fonction openssl_public_encrypt crypte le message à l'aide de la clé publique, garantissant que seule la clé privée peut le déchiffrer.
Déchiffrement de clé privée : La fonction openssl_private_decrypt déchiffre le message à l'aide de la clé privée, garantissant ainsi que les informations sensibles restent sécurisées.
Variables d'environnement : Les clés publiques et privées sont stockées en toute sécurité dans des variables d'environnement, améliorant ainsi la sécurité.

Meilleures pratiques de chiffrement

Utiliser des variables d'environnement : Stockez toujours vos clés dans des variables d'environnement au lieu de les coder en dur dans votre application. Cela réduit le risque d'exposition d'informations sensibles.
Chiffrer les données sensibles : Chiffrer les données personnelles et sensibles telles que les mots de passe, les détails financiers ou les informations personnelles identifiables (PII) pour empêcher tout accès non autorisé.
Utilisez HTTPS : Assurez-vous que votre application communique via HTTPS pour protéger les données en transit.
Gestion sécurisée des clés : Faites régulièrement pivoter les clés de chiffrement et assurez-vous qu'elles sont stockées en toute sécurité.

Pourquoi choisir le cryptage RSA ?

Sécurité améliorée des données : Le cryptage RSA garantit que les données sensibles restent sécurisées pendant la transmission, empêchant tout accès non autorisé.
Chiffrement asymétrique : RSA utilise une clé publique pour le chiffrement et une clé privée pour le déchiffrement, ce qui garantit que la clé privée n'a jamais besoin d'être partagée.
Compatibilité multiplateforme : RSA fonctionne de manière transparente sur différentes plates-formes et langages de programmation, ce qui le rend idéal pour les applications Web où différentes technologies sont utilisées côté client et côté serveur.

Conclusion

Le chiffrement RSA offre un moyen fiable de sécuriser les données sensibles dans plusieurs environnements de programmation. En implémentant le chiffrement et le déchiffrement RSA dans JavaScript, Python et PHP, vous pouvez protéger les informations sensibles, améliorer la sécurité et garantir la compatibilité multiplateforme. Qu'il s'agisse de sécuriser les appels API, de protéger les données des utilisateurs ou d'assurer la confidentialité des messages, RSA fournit une solution de chiffrement robuste.

Si vous avez trouvé ce guide utile, pensez à le partager avec d'autres développeurs et restez à l'écoute pour plus d'informations sur le chiffrement et la sécurité des données !

Chiffrement #RSA #CyberSecurity #DataSecurity #WebDevelopment #CrossPlatformSecurity #JavaScript #Python #PHP

Déclaration de sortie Cet article est reproduit à l'adresse : https://dev.to/shubhamkhan/securing-data-with-rsa-encryption-and-decryption-across-platforms-30d7?1 En cas de violation, veuillez contacter [email protected] pour le supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3