zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    SQL2005的CTE
    分列顯示
    2005数据库结构显示
    十进制/十八进制的互转换(此方法应用于所有进制与10进制的转换)
    2005自动生成数据库的清空脚本
    阻塞分析
    通过在 Web 表单中维持对象的 ViewState (视图状态)
    cs文件调用aspx页面js函数
    Repeater绑定后格式化某字段
    Fireworks中制作炫光效果
  • 原文地址:https://www.cnblogs.com/leaf930814/p/9000346.html
Copyright © 2011-2022 走看看