Nodejs 中常见的加密算法:MD5,RSA
来源:互联网 发布:servlet 返回json 编辑:程序博客网 时间:2024/05/24 06:02
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");//得到verifysignif (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'));
1 0
- Nodejs 中常见的加密算法:MD5,RSA
- Java中常用的加密算法应用MD5,SHA,RSA
- Java中常用的加密算法MD5,SHA,RSA
- Java中常用的加密算法应用MD5,SHA,RSA
- Java中常用的加密算法应用MD5,SHA,RSA
- Java中常用的加密算法应用MD5,SHA,RSA
- DSA MD5 DES RSA 加密算法
- des、MD5、RSA加密算法优缺点
- MD5 和 RSA 加密算法理解
- 加密算法—MD5、RSA、DES
- MD5、RSA、Base64、ASE加密算法
- DES RSA MD5三种加密算法的详尽解说
- 三个著名加密算法(MD5、RSA、DES)的解析一
- 三个著名加密算法(MD5、RSA、DES)的解析二
- 3个著名加密算法(MD5、RSA、DES)的解析
- 3个著名加密算法(MD5、RSA、DES)的解析
- 3个著名加密算法(MD5、RSA、DES)的解析
- 3个著名加密算法(MD5、RSA、DES)的解析
- [1.3]Spark core编程(二)之RDD执行流程图与RDD的基本操作
- 查看NAND Flash空间大小
- MySql数据库优化
- iOS学习之——UIScreenEdgePanGestureRecognizer
- python(十四)网络编程
- Nodejs 中常见的加密算法:MD5,RSA
- Cocoa pods卸载
- 189Rotate Array 实现数组循环右移的代码
- socket阻塞非阻塞,同步异步
- kylin-BI工具-tableau9
- 【深入浅出Node.js系列一】什么是Node.js
- 15个不起眼但非常强大的 Vim 命令
- AFN上传单张图片
- android官方培训