加密技術通常分為兩大類:「對稱式」和「非對稱式」。
對稱式加密:
就是加密和解密使用同一個金鑰,通常稱之為「Session Key 」這種加密技術在當今被廣泛採用,如美國政府所採用的DES加密標準就是一種典型的「對稱式」加密法,它的Session Key長度為56bits。
非對稱式加密:
就是加密和解密所使用的不是同一個密鑰,通常有兩個密鑰,稱為“公鑰”和“私鑰”,它們兩個必需配對使用,否則不能打開加密文件。
加密為系統中經常使用的功能,node自帶強大的加密功能Crypto,下面透過簡單的範例進行練習。
1、加密模組的引用:
var crypto=require('crypto'); var $=require('underscore');var DEFAULTS = { encoding: { input: 'utf8', output: 'hex' }, algorithms: ['bf', 'blowfish', 'aes-128-cbc'] };
預設加密演算法設定項:
輸入資料格式為utf8,輸出格式為hex,
用加密演算法;
2、組態項目初始化:
function MixCrypto(options) { if (typeof options == 'string') options = { key: options }; options = $.extend({}, DEFAULTS, options); this.key = options.key; this.inputEncoding = options.encoding.input; this.outputEncoding = options.encoding.output; this.algorithms = options.algorithms; }
加密演算法可以進行配置,透過配置option進行不同加密演算法及編碼的使用。
3、加密方法代碼如下:
MixCrypto.prototype.encrypt = function (plaintext) { return $.reduce(this.algorithms, function (memo, a) { var cipher = crypto.createCipher(a, this.key); return cipher.update(memo, this.inputEncoding, this.outputEncoding) + cipher.final(this.outputEncoding) }, plaintext, this); };
使用crypto進行資料的加密處理。
4、解密方法代碼如下:
MixCrypto.prototype.decrypt = function (crypted) { try { return $.reduceRight(this.algorithms, function (memo, a) { var decipher = crypto.createDecipher(a, this.key); return decipher.update(memo, this.outputEncoding, this.inputEncoding) + decipher.final(this.inputEncoding); }, crypted, this); } catch (e) { return; } };
使用crypto進行資料的解密處理。
透過underscore中的reduce、reduceRight方法,進行加密和解密的演算法執行。
本文根據民少編寫的演算法進行編寫,如有不足之處,敬請原諒。菜鳥在路上,繼續前進。
以上這篇nodejs加密Crypto的實例代碼就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多PHP中文網。
更多nodejs加密Crypto的實例代碼相關文章請關注PHP中文網!