Node.js DES加密的简单实现
来源: 阅读:825 次 日期:2016-07-25 16:09:18
温馨提示: 小编为您整理了“Node.js DES加密的简单实现”,方便广大网友查阅!

下面小编就为大家带来一篇Node.js DES加密的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。

常见的加密算法基本分为这几类,1 :线性散列算法、2:对称性加密算法、3、非对称性加密算法 (记记记)

线性散列算法(签名算法):MD5,SHA1,HMAC

比如MD5:即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。

特点:

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)

对称性加密算法:AES,DES,3DES

比如AES:(Advanced Encryption Standard)在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

非对称性加密算法:RSA,DSA,ECC

比如RSA:RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。

在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。

NodeJS中的Crypto模块

node利用 OpenSSL库来实现它的加密技术,这是因为OpenSSL已经是一个广泛被采用的加密算法。它包括了类似MD5 or SHA-1 算法,这些算法你可以利用在你的应用中。

下面的代码使用Crypto模块DES算法的实现方法

/***

 * @author chenjianxiang

 * @date 2016-07-07

 */

var crypto = require('crypto');

var key = '12345670';

exports.des = {

  algorithm:{ ecb:'des-ecb',cbc:'des-cbc' },

  encrypt:function(plaintext,iv){

    var key = new Buffer(key);

    var iv = new Buffer(iv ? iv : 0);

    var cipher = crypto.createCipheriv(this.algorithm.ecb, key, iv);

    cipher.setAutoPadding(true) //default true

    var ciph = cipher.update(plaintext, 'utf8', 'base64');

    ciph += cipher.final('base64');

    return ciph;

  },

  decrypt:function(encrypt_text,iv){

    var key = new Buffer(key);

    var iv = new Buffer(iv ? iv : 0);

    var decipher = crypto.createDecipheriv(this.algorithm.ecb, key, iv);

    decipher.setAutoPadding(true);

    var txt = decipher.update(encrypt_text, 'base64', 'utf8');

    txt += decipher.final('utf8');

    return txt;

  }

};

使用DES加密解密方法

//加密

var cryptUtil = require("./utils/crypt");

var str = "https://upload.ynpxrz.com/upload/image/201602120012.jpg";

var encrypt_text = cryptUtil.des.encrypt(str,0);

var decrypt_text = cryptUtil.des.decrypt(encrypt_text,0);

console.log(encrypt_text);

console.log(decrypt_text);

输出结果:

I+qwOsXQvBq18KVmX3ainoMHbs3nT+v64s

/upload/image/201602120012.jpg

以上这篇Node.js DES加密的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考

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