首頁 >web前端 >js教程 >nodejs加密Crypto的實例程式碼

nodejs加密Crypto的實例程式碼

高洛峰
高洛峰原創
2017-01-10 09:17:491124瀏覽

加密技術通常分為兩大類:「對稱式」和「非對稱式」。

對稱式加密:

就是加密和解密使用同一個金鑰,通常稱之為「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中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn