Cet article partage principalement avec vous la méthode de chiffrement asymétrique Node.js et des exemples de code. Les amis qui sont intéressés peuvent s'y référer.
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); };
Code de test 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()); // 你好,我是程序猿小卡
Vous trouverez ci-joint 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----- `;
Ce qui précède est ce que j'ai compilé pour tout le monde . J'espère que cela vous sera utile à l'avenir.
Articles connexes :
Comment implémenter la fonction de prévisualisation d'image dans l'applet WeChat
Comment utiliser vue pour implémenter les statistiques Baidu
Comment utiliser l'applet WeChat pour obtenir l'effet de zone de saisie du numéro MUI
Utilisation de base de la fonction de rendu dans Vue (tutoriel détaillé)
Comment utiliser le composant de curseur de galerie dans le mini-programme WeChat
Utilisation du composant case à cocher dans le mini-programme WeChat
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!