关于处理用户信息明文传输的几种方法

在一般的前后端分离项目当中,时常会有敏感信息明文传输的情况存在。这里我们采用前端数据请求加密,后台数据接收解密来防止他人截取用户等敏感信息。

1.常用的base64加解密

前端需要首先安装base64,使用npm命令:npm install base-64。随后便可以进行加密操作。

import Base64  from 'base-64';

handleSubmit = () => {
    this.switchLoading(true)
    const { form, history, dispatch } = this.props
    const payload = {
      _this: this,
      history
    }
    form.validateFields((err, values) => {
      if(!err){
        //引入base64后,在这里进行base64加密!!!
        values.username = Base64.encode(values.username)
        values.password = Base64.encode(values.password)
        dispatch(doLogin({...payload, values}))
      }else{
        this.switchLoading(false)
      }
    })
  }

 后台接口使用base64进行解密操作,后续便可以继续正常的业务流程。

//使用JavaUtil的Base64进行解密操作
//Base64 解密
        byte[] undecoded = Base64.getDecoder().decode(sysUser.getUsername());
        byte[] pwdecoded = Base64.getDecoder().decode(sysUser.getPassword());
        String unameStr = new String(undecoded);
        String pwdStr = new String(pwdecoded);
        sysUser.setUsername(unameStr);
        sysUser.setPassword(pwdStr);

2.AES加解密

此处需要引入crypto-js做前端数据的加密,同时密钥和偏移量要保持与后端一致。

<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js"></script>

function yhmmadl() {
            $("#loginbtn").hide();
            $("#loginbtnhide").show();
            $("#loginbtnhide").attr("disabled","true");
            //对用户登录信息做加密处理
            //密钥 (前后端一致)十六位
            let key = "abcdefghijkl_key";
            //偏移量 (前后端一致)十六位
            let iv = "abcdefghijklm_iv";
            //获取加密后的密码
            let us = aesMinEncrypt(key,iv,$("#input_username").val());
            let pa = aesMinEncrypt(key,iv,$("#input_password").val()+ "-" + "<%=clientIP%>");
            $("#username").val(us);
            $("#password").val(pa);
        }

后台使用 进行AES解密。

//密钥 (前后端一致)十六位
    private static final String KEY = "abcdefghijkl_key";

    //偏移量 (前后端一致)十六位
    private static final String IV = "abcdefghijklm_iv";
//解密

public static String aesDecrypt(String encryptStr) {
        String result;
        try {
            result =  StringUtils.isEmpty(encryptStr) ? null : aesDecryptByBytes(base64Decode(encryptStr));
        } catch (Exception e) {
            result = "decrypt exception";
            e.printStackTrace();
        }
        return result;

    }

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 通过报文分析获取SSH传输的账号和密码信息是非常困难的,因为SSH使用加密技术来保护通信过程中传输的数据。具体来说,SSH通信过程中使用了非对称加密、对称加密和消息认证码等多种技术,这些技术可以确保通信过程中传输的数据不会被窃听、篡改或伪造。 SSH进行远程管理的通信过程分为以下几个阶段: 1. 连接建立阶段:客户端向服务器发送连接请求,服务器接受请求后发送公钥给客户端。 2. 密钥协商阶段:客户端使用服务器的公钥生成对称加密密钥,并将密钥发送给服务器。 3. 用户认证阶段:客户端发送用户名和密码给服务器,服务器验证用户身份是否合法。 4. 会话阶段:用户通过已认证的连接与服务器进行交互,执行各种操作。 TELNET和SSH进行远程管理的特点可以对比如下: 1. 安全性:TELNET传输的数据不加密,容易被黑客窃听、篡改或伪造,而SSH使用加密技术保护通信过程中传输的数据,安全性更高。 2. 可靠性:TELNET在网络不稳定的情况下容易出现连接中断或数据丢失等问题,而SSH使用数据包确认机制保证数据的可靠传输。 3. 兼容性:TELNET是一种老旧的协议,在一些现代的操作系统和网络设备上可能不被支持,而SSH得到了广泛的应用,几乎所有的现代操作系统和网络设备都支持SSH。 4. 性能:TELNET传输的数据没有加密,速度相对较快,而SSH传输的数据需要加密解密,速度相对较慢。 ### 回答2: 可以通过报文分析获取SSH传输的账号和密码信息。SSH在通信过程中使用了加密算法对报文进行加密和解密操作,以保护通信的安全性。然而,如果攻击者能够成功获取到SSH传输的报文数据,并且获取到加密算法的密钥信息,那么他们就可以进行解密操作,从而获取到账号和密码信息。 SSH进行远程管理的通信过程分为三个阶段:建立连接阶段、用户认证阶段和加密通信阶段。 1. 建立连接阶段:客户端向服务器发送连接请求,服务器回应确认连接。在这个阶段,客户端和服务器协商使用的加密算法,包括密钥协商、会话密钥生成等。 2. 用户认证阶段:客户端与服务器之间进行用户身份验证,确认是否允许用户远程登录。在这个阶段,用户需要提供相应的账号和密码信息进行身份认证。 3. 加密通信阶段:在完成用户认证后,客户端和服务器之间建立安全的通信通道,以保证后续的数据传输的机密性和完整性。通过使用加密算法,报文在传输过程中被加密,确保只有合法的客户端和服务器可以解密和使用报文数据。 TELNET是一种明文传输协议,不提供报文加密和身份认证机制,因此存在安全性较差的问题。而SSH使用了加密算法对报文进行加密,确保数据的安全性。另外,SSH进行用户身份认证,只有通过身份认证的合法用户才能进行远程登录,避免了未经授权的访问。 总结来说,SSH相比TELNET具有更高的安全性和更强的身份认证机制,能够保护远程管理的通信过程中的数据安全。 ### 回答3: 不能通过报文分析直接获取SSH传输的账号和密码信息。SSH(Secure Shell)是一种网络协议,主要用于安全远程管理和数据传输。SSH通过使用加密技术保护通信过程中的数据安全,采用了密钥协商和密钥交换等机制,确保了传输过程的机密性和完整性。因此,SSH协议对账号和密码信息进行了加密处理,在网络传输过程中,无法直接获取明文的账号和密码信息。 SSH进行远程管理的通信过程分为以下几个阶段: 1. 连接建立阶段:客户端向服务器发送连接请求,服务器进行认证。 2. 服务协商阶段:客户端和服务器协商所支持的加密算法和密钥长度等参数。 3. 用户认证阶段:客户端发送用户名和密码等认证信息给服务器,服务器进行认证。 4. 会话建立阶段:双方协商会话密钥和算法等参数,确保数据加密和可靠性传输。 5. 数据传输阶段:客户端和服务器之间进行数据传输,可以执行远程命令、文件传输等操作。 TELNET和SSH是常用的远程管理协议,但它们在安全性方面存在一些区别。 TELNET是一种基于文本的远程管理协议,传输数据不进行加密处理,因此容易被黑客截获并窃取敏感信息,如账号和密码。而SSH采用了加密技术,可防止信息被窃听或篡改。 此外,SSH还支持公钥加密、密钥鉴别等高级安全功能,使得远程管理更加可靠和安全。相比之下,TELNET在安全性上较低,逐渐被SSH所取代。 总而言之,SSH协议通过加密保护了账号和密码信息的安全性,远程管理的通信过程包括连接建立、服务协商、用户认证、会话建立和数据传输等阶段。TELNET与SSH相比,安全性较低,不具备加密保护的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值