Http下用戶名和密碼明文顯示問題


問題描述:在請求協議不是Https的情況下,使用Http協議會讓參數被抓包抓取,為了防止用戶信息被獲取,將登錄請求傳遞的參數進行加密處理。

1.客戶端首先發送一個請求,服務端返回一個隨機數,並保存到session。

2.客戶端將密碼以及隨機數組合,然后進行加密,發送到服務端。

3.服務端接收到用戶名和密碼,取出隨機數,然后與數據庫的密碼進行同樣的加密,然后將session中的隨機數刪除。

 

 實現:

@ApiOperation(value = "生成隨機數",httpMethod = "GET",produces = "HTTP",protocols = "application/json")
    @GetMapping("/getRandom")
    public Result getRandom(HttpServletRequest request){
        Random random = new Random();
        int i = random.nextInt(1000);
        request.getSession().setAttribute("random",i);
        return new Result(BusinessConstant.SYSTEM_SUCESS_CODE,"發送成功",i);
    }

判斷密碼是否正確

 Integer random = (Integer)request.getSession().getAttribute("random");
 String md5Pwd = PasswordEncrypt.getMD5(adsUserAuth.getPassword());     //得到密碼加密
 String pas = PasswordEncrypt.getMD5(md5Pwd + random);              //取得密碼比對前端傳遞的







public class PasswordEncrypt {
    //鹽,用於混交md5
    private static String salt = "oyabc_yyy";
    /**
     * 生成md5
     * @param str
     * @return
     */
    public static String getMD5(String str) {
        String base = str + "/" + salt;
        String md5 = DigestUtils.md5DigestAsHex(base.getBytes());
        return md5;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM