Maison > Article > interface Web > Explication détaillée du chiffrement asymétrique dans Node.js
Cette fois, je vous apporte une explication détaillée du chiffrement asymétrique de Node.js Quelles sont les précautions lors de l'utilisation du chiffrement asymétrique de Node.js. Voici des cas pratiques, voyons. jetez un oeil ensemble.
Je viens de répondre à la question "Erreur de décryptage asymétrique" posée par un frère sur SegmentFault. Il s'agit d'une application de sécurité de Node.js. De nombreuses personnes devraient rencontrer le même problème. Sur la base des questions répondues, voici un bref résumé.
Pour des connaissances théoriques sur le chiffrement asymétrique, vous pouvez vous référer à l'article précédent de l'auteur "NODEJS Advanced : CRYPTO Module Theory".
Le code complet peut être trouvé dans "Nodejs Learning Notes". Vous êtes également invités à suivre le GitHub du programmeur Xiaoka.
Dans Node.js, le module responsable de la sécurité est crypto. Dans le chiffrement asymétrique, le chiffrement à clé publique, le déchiffrement à clé privée et les API correspondantes pour le chiffrement et le déchiffrement sont les suivants.
Fonction de cryptage :
crypto.publicEncrypt(key, buffer)
Fonction de décryptage :
crypto.privateDecrypt(privateKey, buffer)
Supposons qu'il existe le utils.js suivant
// utils.js const crypto = require('crypto'); // 加密方法 exports.encrypt = (data, key) => { // 注意,第二个参数是Buffer类型 return crypto.publicEncrypt(key, Buffer.from(data)); }; // 解密方法 exports.decrypt = (encrypted, key) => { // 注意,encrypted是Buffer类型 return crypto.privateDecrypt(key, encrypted); };
Test code app.js :
const utils = require('./utils'); const keys = require('./keys'); const plainText = '你好,我是程序猿小卡'; const crypted = utils.encrypt(plainText, keys.pubKey); // 加密 const decrypted = utils.decrypt(crypted, keys.privKey); // 解密 console.log(decrypted.toString()); // 你好,我是程序猿小卡
Joignez la clé publique et la clé privée keys.js :
exports.privKey = `-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDFWnl8fChyKI/Tgo1ILB+IlGr8ZECKnnO8XRDwttBbf5EmG0qV 8gs0aGkh649rb75I+tMu2JSNuVj61CncL/7Ct2kAZ6CZZo1vYgtzhlFnxd4V7Ra+ aIwLZaXT/h3eE+/cFsL4VAJI5wXh4Mq4Vtu7uEjeogAOgXACaIqiFyrk3wIDAQAB AoGBAKdrunYlqfY2fNUVAqAAdnvaVOxqa+psw4g/d3iNzjJhBRTLwDl2TZUXImEZ QeEFueqVhoROTa/xVg/r3tshiD/QC71EfmPVBjBQJJIvJUbjtZJ/O+L2WxqzSvqe wzYaTm6Te3kZeG/cULNMIL+xU7XsUmslbGPAurYmHA1jNKFpAkEA48aUogSv8VFn R2QuYmilz20LkCzffK2aq2+9iSz1ZjCvo+iuFt71Y3+etWomzcZCuJ5sn0w7lcSx nqyzCFDspQJBAN3O2VdQF3gua0Q5VHmK9AvsoXLmCfRa1RiKuFOtrtC609RfX4DC FxDxH09UVu/8Hmdau8t6OFExcBriIYJQwDMCQQCZLjFDDHfuiFo2js8K62mnJ6SB H0xlIrND2+/RUuTuBov4ZUC+rM7GTUtEodDazhyM4C4Yq0HfJNp25Zm5XALpAkBG atLpO04YI3R+dkzxQUH1PyyKU6m5X9TjM7cNKcikD4wMkjK5p+S2xjYQc1AeZEYq vc187dJPRIi4oC3PN1+tAkBuW51/5vBj+zmd73mVcTt28OmSKOX6kU29F0lvEh8I oHiLOo285vG5ZtmXiY58tAiPVQXa7eU8hPQHTHWa9qp6 -----END RSA PRIVATE KEY----- `; exports.pubKey = `-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFWnl8fChyKI/Tgo1ILB+IlGr8 ZECKnnO8XRDwttBbf5EmG0qV8gs0aGkh649rb75I+tMu2JSNuVj61CncL/7Ct2kA Z6CZZo1vYgtzhlFnxd4V7Ra+aIwLZaXT/h3eE+/cFsL4VAJI5wXh4Mq4Vtu7uEje ogAOgXACaIqiFyrk3wIDAQAB -----END PUBLIC KEY----- `;
Je crois que vous maîtrisez la méthode après avoir lu le cas dans cet article, et plus encore Comme c'est excitant, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !
Lecture recommandée :
Comment gérer l'affichage incomplet des pages en mode de compatibilité du navigateur 360
CSS3 pour implémenter l'inclinaison et Effet d'animation de rotation
Diverses méthodes d'écriture de CSS
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!