Maison  >  Article  >  interface Web  >  Introduction aux méthodes courantes du module de chiffrement NODE.JS CRYPTO

Introduction aux méthodes courantes du module de chiffrement NODE.JS CRYPTO

高洛峰
高洛峰original
2016-12-26 09:18:141292parcourir

Utilisez require('crypto') pour appeler le module de chiffrement.

Le module de chiffrement nécessite que le système sous-jacent fournisse la prise en charge d'OpenSSL. Il fournit un moyen d'encapsuler les informations d'identification de sécurité et peut être utilisé pour les réseaux sécurisés HTTPS ainsi que pour les connexions HTTP ordinaires.

Ce module fournit également un ensemble de hachage (hachage), hmac (hachage de clé), chiffrement (codage), déchiffrement (décodage), signe (signature) et vérification (vérification) pour l'encapsulation de la méthode OpenSSL.

crypto.createCredentials(details)

Créer un objet d'identification. Le paramètre facultatif détails est un dictionnaire avec des valeurs de clé :
key : un type de chaîne, clé privée codée en PEM.
cert : Un certificat de certification de type chaîne, codé PEM.
ca : certificat d'autorité de certification de confiance codé PEM sous forme de chaîne ou une liste de certificats.

Si aucun détail « ca » n'est fourni, node.js utilisera la liste publique de confiance par défaut située à l'adresse http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins /certdata.txt.

crypto.createHash(algorithm)

Crée et renvoie un objet de hachage, qui est un hachage cryptographique de l'algorithme spécifié et est utilisé pour générer un résumé de hachage.

Le paramètre algorithme peut sélectionner l'algorithme pris en charge par la version OpenSSL installée sur le système. Par exemple : 'sha1', 'md5', 'sha256', 'sha512', etc. Dans les versions récentes, openssl list-message-digest-algorithms affichera ces algorithmes de résumé disponibles.

hash.update(data)

Mettre à jour le contenu du hachage avec les données spécifiées. Cette méthode peut être appelée plusieurs fois lorsque vous travaillez avec des données en streaming.

hash.digest(encoding='binary')

Calcule le résumé de hachage de toutes les données entrantes. Le paramètre d'encodage peut être « hex », « binaire » ou « base64 ».

crypto.createHmac(algorithm, key)

Crée et renvoie un objet hmac, qui est un hmac cryptographique avec l'algorithme et la clé spécifiés.

Le paramètre algorithm peut sélectionner l'algorithme pris en charge par OpenSSL - voir createHash ci-dessus. La clé de paramètre est la clé utilisée par hmac.

hmac.update(data)

Mettre à jour le contenu de hmac avec les données spécifiées. Cette méthode peut être appelée plusieurs fois lorsque vous travaillez avec des données en streaming.

hmac.digest(encoding='binary')

Calcule le résumé hmac de toutes les données entrantes. Le paramètre d'encodage peut être « hex », « binaire » ou « base64 ».

crypto.createCipher(algorithm, key)

Crée et renvoie un objet de chiffrement en utilisant l'algorithme et la clé spécifiés.

Le paramètre algorithme peut sélectionner l'algorithme pris en charge par OpenSSL, tel que 'aes192', etc. Dans les versions récentes, openssl list-cipher-algorithms affichera les algorithmes de chiffrement disponibles.

cipher.update(data, input_encoding='binary', output_encoding='binary')

Utilisez le paramètre data pour mettre à jour le contenu à chiffrer. La méthode d'encodage est spécifiée par le paramètre. input_encoding, qui peut être « utf8 », « ascii » ou « binaire ». Le paramètre output_encoding spécifie la méthode de codage de sortie du contenu chiffré, qui peut être « binaire », « base64 » ou « hex ».

Renvoie le contenu crypté, cette méthode peut être appelée plusieurs fois lors de l'utilisation de données en streaming.

cipher.final(output_encoding='binary')

Renvoie tout le contenu crypté restant, l'encodage de sortie output_encoding est l'un des "binaire", "ascii" ou "utf8".

crypto.createDecipher(algorithm, key)

Crée et renvoie un objet de décryptage en utilisant l'algorithme et la clé donnés. Cet objet est l'inverse de l'objet chiffré ci-dessus.

decipher.update(data, input_encoding='binary', output_encoding='binary')

Utilisez les données de paramètre pour mettre à jour le contenu à déchiffrer, et sa méthode d'encodage est 'binaire', 'base64' ou 'hex'. Le paramètre output_encoding spécifie la méthode de codage de sortie du contenu en texte brut déchiffré, qui peut être « binaire », « ascii » ou « utf8 ».

decipher.final(output_encoding='binary')

Renvoie tous les textes bruts déchiffrés restants dont output_encoding' est l'un des 'binary', 'ascii' ou 'utf8'` .

crypto.createSign(algorithm)

Crée et renvoie un objet signataire en utilisant l'algorithme donné. Dans les distributions OpenSSL existantes, openssl list-public-key-algorithms affichera les algorithmes de signature disponibles, par exemple : « RSA-SHA256 ».

signer.update(data)

Utilisez le paramètre data pour mettre à jour l'objet signataire. Cette méthode peut être appelée plusieurs fois lorsque vous travaillez avec des données en streaming.

signer.sign(private_key, output_format='binary')

Calcule la signature de toutes les données transmises au signataire. private_key est une chaîne qui contient la clé privée codée en PEM utilisée pour la signature.

Signature de retour, sa sortie output_format peut être 'binary', 'hex' ou 'base64'.

crypto.createVerify(algorithm)

Crée et renvoie un objet vérificateur en utilisant l'algorithme donné. C'est l'inverse de l'objet signataire ci-dessus.

verifier.update(data)

Mise à jour l'objet validateur à l'aide du paramètre data. Cette méthode peut être appelée plusieurs fois lorsque vous travaillez avec des données en streaming.

verifier.verify(cert, signature, signature_format='binary')

Utilisez les paramètres cert et signature pour vérifier que les données signées sont la chaîne de clé publique codée en PEM, la signature est la signature des données précédemment calculées et signature_format peut être « binaire », « hex » ou « base64 ». .

Renvoyer vrai ou faux en fonction du résultat de la vérification de la validité de la signature des données et de la clé publique.

Comment écrire un code de cryptage irréversible lorsque vous en avez besoin

var text = "123|12312312123123121231231212312312123123121231231212312312";
var hasher=crypto.createHash("md5");
hasher.update(text);
var hashmsg=hasher.digest('hex');//hashmsg为加密之后的数据

Quand vous avez besoin d'un environnement de cryptage et de décryptage

var key="asdhjwheru*asd123-123";//加密的秘钥
var text = "123|12312312123123121231231212312312123123121231231212312312";
var crypted =cipher.update(text,'utf8','hex');
crypted+=cipher.final('hex');
var message=crypted;//加密之后的值
var decipher = crypto.createDecipher('aes-256-cbc',key);
var dec=decipher.update(message,'hex','utf8');
dec+= decipher.final('utf8');//解密之后的值

Plus de cryptage NODE.JS Veuillez payer attention au site Web PHP chinois pour les articles connexes présentant les méthodes courantes du module CRYPTO !

Déclaration:
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