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.
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
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.
console.log(crypto.getHashes());
crypto.createHash(algorithm);//创建HASH对象 hash.update(data,[input_encoding]);//增加要添加摘要的数据,摘要输出前可以使用多次update hash.digest([encoding]);//输出摘要内容,输出后则不能再添加摘要内容
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);
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); })
L'algorithme HMAC combine. un algorithme de hachage avec une clé pour éviter d'endommager l'intégrité de la signature
let hmac crypto.createHmac(algorithm,key); hmac.update(data);
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
let pem = fs.readFileSync(path.join(__dirname, './rsa_private.key')); let key = pem.toString('ascii'); let hmac = crypto.createHmac('sha1', key); let rs = fs.createReadStream(path.join(__dirname, './1.txt')); rs.on('data', function (data) { hmac.update(data); }); rs.on('end', function () { let result = hmac.digest('hex'); console.log(result); });
var crypto = require('crypto'); var fs = require('fs'); let str = 'hello'; let cipher = crypto.createCipher('blowfish', fs.readFileSync(path.join(__dirname, 'rsa_private.key'))); let encry = cipher.update(str, 'utf8','hex'); encry += cipher.final('hex'); console.log(encry); let deciper = crypto.createDecipher('blowfish', fs.readFileSync(path.join(__dirname, 'rsa_private.key'))); let deEncry = deciper.update(encry, 'hex','utf8'); deEncry += deciper.final('utf8'); console.log(deEncry);
Créer une clé publique pour le privé key
openssl rsa -in rsa_private.key -pubout -out rsa_public.key
var crypto = require('crypto'); var fs = require('fs'); let key = fs.readFileSync(path.join(__dirname, 'rsa_private.key')); let cert = fs.readFileSync(path.join(__dirname, 'rsa_public.key')); let secret = crypto.publicEncrypt(cert, buffer);//公钥加密 let result = crypto.privateDecrypt(key, secret);//私钥解密 console.log(result.toString());
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.
let private = fs.readFileSync(path.join(__dirname, 'rsa_private.key'), 'ascii'); let public = fs.readFileSync(path.join(__dirname, 'rsa_public.key'), 'ascii'); let str = 'zhufengpeixun'; let sign = crypto.createSign('RSA-SHA256'); sign.update(str); let signed = sign.sign(private, 'hex'); let verify = crypto.createVerify('RSA-SHA256'); verify.update(str); let verifyResult = verify.verify(public,signed,'hex'); //true
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!