crypto は、node.jsに暗号化と復号化を実装するモジュールです。この記事では、crypto モジュールについて説明し、ハッシュ (ハッシュ) アルゴリズム、HMAC アルゴリズム、対称暗号化方式と非対称暗号化方式。
crypto
は、node.js# での暗号化の実装です。 ## および復号化モジュール、
node.jsでは、
OpenSSLクラス ライブラリが暗号化と復号化を内部的に実装する手段として使用されます。厳密にテストされた暗号化および復号化アルゴリズムの実装ツール。 [推奨学習: 「
nodejs チュートリアル」]
Windows バージョン openSSL ダウンロード
http://dl.pconline.com.cn/download/355862- 1.html 2. ハッシュ (ハッシュ) アルゴリズム
同じ入力は同じ出力を生成します
2.1 すべてのハッシュを取得するアルゴリズム
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);
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); })
3. HMAC アルゴリズム
let hmac crypto.createHmac(algorithm,key); hmac.update(data);
$ 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);
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());
6. 署名
ネットワークでは、秘密鍵の所有者は送信前にデータに署名できます。データが
署名
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
プログラミング関連の知識について詳しくは、こちらをご覧ください。アクセス:
プログラミングビデオ! !
以上がNodejs での暗号モジュールの使用法を 1 つの記事で素早く理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。