nodejs加密Crypto简单例子

加密技术一般分为两大类:“对称式”和“非对称式”。node

对称式加密:算法

就是加密和解密使用同一个密钥,一般称之为“Session Key ”这种加密技术在当今被普遍采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法,它的Session Key长度为56bits。
非对称式加密:ui

就是加密和解密所使用的不是同一个密钥,一般有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,不然不能打开加密文件。this

 

加密为系统中常用的功能,node自带强大的加密功能Crypto,下面经过简单的例子进行练习。编码

一、加密模块的引用:加密

var crypto=require('crypto');
var $=require('underscore');
var DEFAULTS = {
    encoding: {
        input: 'utf8',
        output: 'hex'
    },
    algorithms: ['bf', 'blowfish', 'aes-128-cbc']
};

默认加密算法配置项:spa

输入数据格式为utf8,输出格式为hex,prototype

算法使用bf,blowfish,aes-128-abc三种加密算法;code

二、配置项初始化:blog

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进行不一样加密算法及编码的使用。

三、加密方法代码以下: 

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进行数据的加密处理。

四、解密方法代码以下:

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方法,进行加密和解密的算法执行。

本文根据民少编写的算法进行编写,若有不足之处,敬请原谅。菜鸟在路上,继续前进。

相关文章
相关标签/搜索