nodejs 加密

 

Nodejs 中常见的加密算法:MD5,RSA

标签: MD5rsanodejs

2016-05-26 16:41 1069人阅读 评论(0) 收藏 举报

category_icon.jpg 分类:

nodejs(2) arrow_triangle%20_down.jpg

版权声明:本文为博主原创文章,未经博主允许不得转载。

目录(?)[+]

Nodejs 中常见的加密算法:MD5,RSA

在信息化的时代,信息安全是个很大的问题。为了尽可能的减少不安全的因素,我们会在开发的过程中会对相应的信息进行加密解密,典型的应用就是针对第三方的支付的问题。本文主要介绍了MD5和RSA在Nodejs中的应用

MD5

MD5(单向散列算法):输入任意长度的信息,经过处理,输出为128位的信息(数字指纹);不同的输入得到的不同的结果(唯一性);根据128位的输出结果不可能反推出输入的信息(不可逆)。 
有在线的验证的地址:http://tool.chinaz.com/Tools/MD5.aspx

先上代码:

//加密
var crypto = require('crypto');
var content = 'password'
var md5 = crypto.createHash('md5');
md5.update(content);
var sign = md5.digest('hex');
console.log(sign);
//解密
var verifysign = crypto.createHash('md5').update(content, 'utf8').digest("hex");
//得到verifysign
if (verifysign == sign) {
    console.log("验证成功!");
}
if (verifysign != sign) {
    console.log("验证失败!");
}
  •  

我们可以在做加密的时候自己设置一个不对外公开的key.拼接到要加密的内容里面

RSA

RSA是非对称加密算法 
加密解密流程

设若甲有一份需保密的数字商业合同发给乙签署。经过如下步骤: 
1. 甲用乙的公钥对合同加密。 
2. 密文从甲发送到乙。 
3. 乙收到密文,并用自己的私钥对其解密。 
4. 解密正确,经阅读,乙用自己的私钥对合同进行签署。 
5. 乙用甲的公钥对已经签署的合同进行加密。 
6. 乙将密文发给甲。 
7. 甲用自己的私钥将已签署合同解密。 
8. 解密正确,确认签署。

首先生成公私钥,然后将生成的公钥上传到应用公钥,步骤如下:

Linux用户(以Ubuntu为例)
$ openssl 进入OpenSSL程序
OpenSSL> genrsa -out rsa_private_key.pem 1024 生成私钥
OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt Java开发者需要将私钥转换成PKCS8格式
OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 生成公钥
OpenSSL> exit ## 退出OpenSSL程序

Windows用户在cmd窗口中进行以下操作:
C:\Users\Hammer>cd C:\OpenSSL-Win32\bin 进入OpenSSL安装目录
C:\OpenSSL-Win32\bin>openssl.exe 进入OpenSSL程序
OpenSSL> genrsa -out rsa_private_key.pem 1024 生成私钥
OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt Java开发者需要将私钥转换成PKCS8格式
OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 生成公钥
OpenSSL> exit ## 退出OpenSSL程序
  •  

生成公钥私钥之后就可以使用他们进行加密解密了。

代码:

var crypto = require('crypto')
    ,fs = require('fs');
var privatePem = fs.readFileSync('./pem/rsa_private_key.pem');
var publicPem = fs.readFileSync('./pem/rsa_public_key.pem');
var key = privatePem.toString();
var pubkey = publicPem.toString();
var data = "cdss";
//加密
var sign = crypto.createSign('RSA-SHA256');
sign.update(data);
var sig = sign.sign(key, 'hex');
console.log(sig);
//解密
var verify = crypto.createVerify('RSA-SHA256');
verify.update(data);
console.log(verify.verify(pubkey, sig, 'hex'));

转载于:https://my.oschina.net/u/2603728/blog/856333

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值