nodejs加密Crypto的实例代码
来源: 阅读:828 次 日期:2016-07-25 16:07:45
温馨提示: 小编为您整理了“nodejs加密Crypto的实例代码”,方便广大网友查阅!

下面小编就为大家带来一篇nodejs加密Crypto的实例代码。小编觉得挺不错的, 现在就分享给大家,也给大家做个参考。

加密技术通常分为两大类:“对称式”和“非对称式”。

对称式加密:

就是加密和解密使用同一个密钥,通常称之为“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,

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

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的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考

更多信息请查看网络编程
手机网站地址:nodejs加密Crypto的实例代码
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map