nodejs暗号化Cryptの簡単な例

4480 ワード

暗号化技術は通常、「対称式」と「非対称式」の二つの種類に分類される.
対称暗号化:
暗号化と暗号解読は同じ鍵を使用することで、通常は「Session Key」と呼ばれる暗号化技術が現在広く採用されています.米国政府が採用しているDES暗号化規格は典型的な「対称式」暗号化法であり、そのSession Keyの長さは56 bittsです.非対称暗号化:
つまり、暗号化と復号に使用されるのは同じ鍵ではなく、通常は2つの鍵があります.「公開鍵」と「秘密鍵」と呼ばれています.この2つはペアで使用しなければなりません.そうでなければ、暗号化されたファイルを開けません.
 
暗号化はシステムでよく使われている機能です.Nodeは強力な暗号化機能のCryptを備えています.以下は簡単な例で練習します.
1、暗号化モジュールの参照:
var crypto=require('crypto');
var $=require('underscore');
var DEFAULTS = {

    encoding: {

        input: 'utf8',

        output: 'hex'

    },

    algorithms: ['bf', 'blowfish', 'aes-128-cbc']

};
デフォルトの暗号化アルゴリズムの設定項目:
入力データフォーマットはutf 8で、出力フォーマットはhexです.
アルゴリズムはbf,blowfish,aes-288-abcの3つの暗号化アルゴリズムを使用する.
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);

};
cryptを使ってデータの暗号化処理を行います.
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;

    }

};
cryptを使ってデータの復号処理を行います.
undersscoreのreduce、reduceRight方法によって暗号化と復号のアルゴリズムが実行されます.
この文章は民少編纂のアルゴリズムに基づいて作成します.もし足りないところがあれば、許してください.野菜や鳥は道を歩き続けます.