Heim  >  Artikel  >  Web-Frontend  >  Ausführliche Erläuterung der asymmetrischen Verschlüsselung in Node.js

Ausführliche Erläuterung der asymmetrischen Verschlüsselung in Node.js

php中世界最好的语言
php中世界最好的语言Original
2018-03-23 09:21:132238Durchsuche

Dieses Mal bringe ich Ihnen eine detaillierte Erklärung der asymmetrischen Verschlüsselung von Node.js Was sind die Vorsichtsmaßnahmen bei der Verwendung der asymmetrischen Verschlüsselung von Node.js? Schauen Sie mal rein.

Vorwort

Ich habe gerade die von einem Bruder auf SegmentFault gestellte Frage „Asymmetrischer Entschlüsselungsfehler“ beantwortet. Dies ist eine Sicherheitsanwendung von Node.js. Aufgrund der beantworteten Fragen finden Sie hier eine kurze Zusammenfassung.

Theoretische Kenntnisse zur asymmetrischen Verschlüsselung finden Sie im vorherigen Artikel des Autors „NODEJS Advanced: CRYPTO Module Theory“.

Den vollständigen Code finden Sie in „Nodejs Learning Notes“. Sie können auch gerne dem GitHub von Programmierer Xiaoka folgen.

Verschlüsselungs- und Entschlüsselungsmethoden

In Node.js ist Krypto das für die Sicherheit verantwortliche Modul. Bei der asymmetrischen Verschlüsselung lauten die Verschlüsselung mit öffentlichem Schlüssel, die Entschlüsselung mit privatem Schlüssel und die entsprechenden APIs für die Verschlüsselung und Entschlüsselung wie folgt.

Verschlüsselungsfunktion:

crypto.publicEncrypt(key, buffer)

Entschlüsselungsfunktion:

crypto.privateDecrypt(privateKey, buffer)

Beispiel für den ersten Schritt

Angenommen, es gibt die folgenden utils.js

// 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);
};

Testcode 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()); // 你好,我是程序猿小卡

Hängen Sie den öffentlichen Schlüssel und den privaten Schlüssel an Der Fall in diesem Artikel und mehr. Wie aufregend, achten Sie bitte auf andere verwandte Artikel auf der chinesischen PHP-Website!

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-----
`;
Empfohlene Lektüre:

Wie man mit unvollständiger Seitenanzeige im 360-Browser-Kompatibilitätsmodus umgeht


CSS3 zur Implementierung von Tilt und Rotationsanimationseffekt


Verschiedene Schreibmethoden von CSS

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der asymmetrischen Verschlüsselung in Node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn