RSA实现前端数据加密

一、前言

   一般在登录注册的时候,不能以明文的方式传递数据到后台,如果是http下,很容易被劫持。所以对数据进行加密是常规做法。

二、RSA算法

  ”RSA加密算法是一种非对称加密算法。对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA钥匙才可能被强力方式解破。到目前为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。”----来自度娘

三、前端使用

  下载第三方js库来使用RSA。下载地址

import _rsa from 'rsa'
import publikey fom '../component/key'
const rsa = new (_rsa.RSA)

//设置公钥
rsa.setPublicKey(key);

//传给后台
params: {
     userid:this.userId,
     password : rsa.encrypt( this.password ),
 }

说明:有一对像相对应的公钥和私钥匙,服务器获得公钥加密之后的密码,再用用对应的私钥打开。私钥一般放在服务器上面,只有我们自己知道。这样就可以做到,即使密码被拦截,攻击者也很难破解密码。

四、node-crypto模块加密

const crypto = require('crypto');

const secret = '123456';
const hash = crypto.createHmac('sha256', secret)
                   .update('I love cupcakes')
                   .digest('hex');
console.log(hash);

//3d75d8ac4218af38afa74989472d87cbe2e706c67d19b7d0508a12b9ebc4d8e9

  

posted @ 2018-05-06 23:31  leaf+  阅读(3333)  评论(1编辑  收藏  举报