Maison > interface Web > js tutoriel > Comprenez rapidement l'utilisation du module crypto dans Nodejs dans un seul article

Comprenez rapidement l'utilisation du module crypto dans Nodejs dans un seul article

青灯夜游
Libérer: 2021-08-02 10:09:12
avant
5968 Les gens l'ont consulté

crypto est un module qui implémente le cryptage et le décryptage dans node.js. l'article Cet article vous présente le module crypto et présente les méthodes d'utilisation du module crypto pour effectuer des algorithmes de hachage (hachage), des algorithmes HMAC, un cryptage symétrique et un cryptage asymétrique.

Comprenez rapidement l'utilisation du module crypto dans Nodejs dans un seul article

1. crypto

crypto est un module qui implémente le cryptage et le déchiffrement dans node.js. Dans node.js, la bibliothèque de classes OpenSSL est utilisée comme moyen d'implémenter en interne le cryptage et le déchiffrement. OpenSSL est un outil de mise en œuvre d'algorithmes de cryptage et de déchiffrement fiable et rigoureusement testé. [Apprentissage recommandé : "tutoriel nodejs"] p>

Téléchargement openSSL de la version Windows

http://dl.pconline.com.cn/download/355862-1.html

2. Algorithme de hachage (hachage)

L'algorithme de hachage est également appelé algorithme de hachage. Il est utilisé pour transformer une entrée de n'importe quelle longueur en sortie de longueur fixe. Commun Il existe des md5 , sha1, etc.

  • La même entrée produira la même sortie
  • Une sortie différente produira des sorties différentes
  • Toute sortie de longueur d'entrée La longueur est la même chose
  • La valeur d'entrée ne peut pas être déduite de la sortie

Comprenez rapidement lutilisation du module crypto dans Nodejs dans un seul article

2.1 Obtenir tous les algorithmes de hachage

console.log(crypto.getHashes());
Copier après la connexion

2.2 Description de la syntaxe

crypto.createHash(algorithm);//创建HASH对象
hash.update(data,[input_encoding]);//增加要添加摘要的数据,摘要输出前可以使用多次update
hash.digest([encoding]);//输出摘要内容,输出后则不能再添加摘要内容
Copier après la connexion

2.3 Algorithme de hachage exemple

var crypto = require('crypto');
var md5 = crypto.createHash('md5');//返回哈希算法
var md5Sum = md5.update('hello');//指定要摘要的原始内容,可以在摘要被输出之前使用多次update方法来添加摘要内容
var result = md5Sum.digest('hex');//摘要输出,在使用digest方法之后不能再向hash对象追加摘要内容。
console.log(result);
Copier après la connexion

Mises à jour multiples

var fs = require('fs');
var shasum = crypto.createHash('sha1');//返回sha1哈希算法
var rs = fs.createReadStream('./readme.txt');
rs.on('data', function (data) {
    shasum.update(data);//指定要摘要的原始内容,可以在摘要被输出之前使用多次update方法来添加摘要内容
});
rs.on('end', function () {
    var result = shasum.digest('hex');//摘要输出,在使用digest方法之后不能再向hash对象追加摘要内容。
    console.log(result);
})
Copier après la connexion

3 Algorithme HMAC

L'algorithme HMAC combine. un algorithme de hachage avec une clé pour éviter d'endommager l'intégrité de la signature

Comprenez rapidement lutilisation du module crypto dans Nodejs dans un seul article

3.1 Syntaxe
let hmac crypto.createHmac(algorithm,key);
hmac.update(data);
Copier après la connexion
  • l'algorithme est un algorithme de résumé disponible, tel que sha1, md5, sha256
  • la clé est une chaîne utilisée pour spécifier une clé au format PEM
  • < /ul>

    3.2 Générer une clé privée

    PEM est le format standard d'OpenSSL OpenSSL utilise le format de fichier PEM pour stocker les certificats et les clés basés sur un certificat codé en Base64.

    $ openssl genrsa -out rsa_private.key 1024
    Copier après la connexion

    3.3 Exemple

    let pem = fs.readFileSync(path.join(__dirname, &#39;./rsa_private.key&#39;));
    let key = pem.toString(&#39;ascii&#39;);
    let hmac = crypto.createHmac(&#39;sha1&#39;, key);
    let rs = fs.createReadStream(path.join(__dirname, &#39;./1.txt&#39;));
    rs.on(&#39;data&#39;, function (data) {
        hmac.update(data);
    });
    rs.on(&#39;end&#39;, function () {
        let result = hmac.digest(&#39;hex&#39;);
        console.log(result);
    });
    Copier après la connexion

    4.

    • L'algorithme Blowfish est un algorithme de chiffrement symétrique signifie que la même clé est utilisée pour le chiffrement et le déchiffrement.

    3. jpg

    var crypto = require(&#39;crypto&#39;);
    var fs = require(&#39;fs&#39;);
    let str = &#39;hello&#39;;
    let cipher = crypto.createCipher(&#39;blowfish&#39;, fs.readFileSync(path.join(__dirname, &#39;rsa_private.key&#39;)));
    let encry = cipher.update(str, &#39;utf8&#39;,&#39;hex&#39;);
    encry += cipher.final(&#39;hex&#39;);
    console.log(encry);
    
    let deciper = crypto.createDecipher(&#39;blowfish&#39;, fs.readFileSync(path.join(__dirname, &#39;rsa_private.key&#39;)));
    let deEncry = deciper.update(encry, &#39;hex&#39;,&#39;utf8&#39;);
    deEncry += deciper.final(&#39;utf8&#39;);
    console.log(deEncry);
    Copier après la connexion

    5. Algorithme de chiffrement asymétrique

    • L'algorithme de chiffrement asymétrique nécessite deux clés : clé publique et clé privée
    • La clé publique et la clé privée forment une paire Si la clé publique est utilisée pour chiffrer des données, seule la clé privée correspondante peut être utilisée pour les déchiffrer, si la clé privée. est chiffré, seule la clé publique peut être déchiffrée
    • Comme le chiffrement et le déchiffrement utilisent deux clés différentes, cet algorithme est appelé algorithme de chiffrement asymétrique

    Comprenez rapidement lutilisation du module crypto dans Nodejs dans un seul article

    Créer une clé publique pour le privé key

    openssl rsa -in rsa_private.key -pubout -out rsa_public.key
    Copier après la connexion
    var crypto = require(&#39;crypto&#39;);
    var fs = require(&#39;fs&#39;);
    let key = fs.readFileSync(path.join(__dirname, &#39;rsa_private.key&#39;));
    let cert = fs.readFileSync(path.join(__dirname, &#39;rsa_public.key&#39;));
    let secret = crypto.publicEncrypt(cert, buffer);//公钥加密
    let result = crypto.privateDecrypt(key, secret);//私钥解密
    console.log(result.toString());
    Copier après la connexion

    6. Signature

    Dans le réseau, le propriétaire de la clé privée peut Avant qu'une donnée soit envoyées, les données sont signées et une signature est obtenue. Une fois les données envoyées au destinataire des données via le réseau, le destinataire des données peut utiliser la clé publique pour. signez-la. La signature est vérifiée pour garantir que ces données sont les données originales envoyées par le propriétaire de la clé privée et n'ont pas été modifiées lors de la transmission sur le réseau.

    Comprenez rapidement lutilisation du module crypto dans Nodejs dans un seul article

    let private = fs.readFileSync(path.join(__dirname, &#39;rsa_private.key&#39;), &#39;ascii&#39;);
    let public = fs.readFileSync(path.join(__dirname, &#39;rsa_public.key&#39;), &#39;ascii&#39;);
    let str = &#39;zhufengpeixun&#39;;
    let sign = crypto.createSign(&#39;RSA-SHA256&#39;);
    sign.update(str);
    let signed = sign.sign(private, &#39;hex&#39;);
    let verify = crypto.createVerify(&#39;RSA-SHA256&#39;);
    verify.update(str);
    let verifyResult = verify.verify(public,signed,&#39;hex&#39;); //true
    Copier après la connexion

    Adresse originale : https://juejin.cn/post/6844903800491376653

    Pour plus de connaissances sur la programmation, veuillez visiter : Vidéo de programmation ! !

    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!

Étiquettes associées:
source:juejin.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal