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
    

      

  • 相关阅读:
    android gradle 多渠道打包
    Gradle Plugin User Guide 中文版
    最好的JAVA IDE IntelliJ IDEA使用简介(一)—之界面元素
    ANDROID 中UID与PID的作用与区别
    HTTP Header 详解
    HTTP协议详解
    Volatile总结
    Condition-线程通信更高效的方式
    JAVA基础知识点(转载的)
    CountDownLatch和CyclicBarrier的区别
  • 原文地址:https://www.cnblogs.com/leaf930814/p/9000346.html
Copyright © 2011-2022 走看看