簡體   English   中英

如何使用MD5哈希值來使用Javascript保護JSP中的登錄密碼?

[英]How to Use MD5 Hash for securing Login passwords in JSP with Javascript?

如何在客戶端使用md5哈希來保護從客戶端(JSP)到服務器中Servlet的密碼傳輸? 以下帖子似乎可以回答這個問題,但是由於代碼塊不完整,我無法完全理解它。 http://www.techlabs4u.com/2010/03/how-to-use-salted-md5-hash-for-securing.html

如何在客戶端使用md5哈希來保護從客戶端(JSP)到服務器中Servlet的密碼傳輸?

你不能

密碼散列用於避免存儲原始密碼,以便在數據庫受損時對其進行保護。 (而且MD5損壞了,因此無論如何您都不應該使用它)。

為了確保傳輸中的密碼安全,請使用SSL(通過HTTPS)。

如果您正在尋找Java和JSP中MD5加密的完整代碼,就在這里。 首先創建一個可以加密文本的Java類。 我創建了mdjavahash.java ,如下所示。

package mdhash;

import java.security.*;

public class mdjavahash {
    private String hashpass="";

    public String getHashPass(String password) throws 
        NoSuchAlgorithmException{

        String plainText = password;
        MessageDigest mdAlgorithm = MessageDigest.getInstance("MD5");
        mdAlgorithm.update(plainText.getBytes());

        byte[] digest = mdAlgorithm.digest();
        StringBuffer hexString = new StringBuffer();

        for (int i = 0; i < digest.length; i++) {
            plainText = Integer.toHexString(0xFF & digest[i]);

            if (plainText.length() < 2) {
                plainText = "0" + plainText;
            }

            hexString.append(plainText);
        }
        hashpass = hexString.toString();

        return hashpass;
    }
}

現在,您可以在jsp文件中使用mdjavahash類進行加密。 例如:

<%@ page import="java.security.*, mdhash.*" %>
<%
  String mypassword = "";

  mdjavahash md = new mdjavahash();

  mypassword = "Hello World";
  out.println("Actual String is : "+mypassword+" <br/>MD5 String is : 
  "+md.getHashPass(mypassword));
%>

您已經完成了JSP中的加密。

散列和添加密碼,然后以明文形式發送哈希值,僅以明文形式發送密碼,根本沒有提供任何額外的安全性。 如果攻擊者能夠攔截明文密碼並使用該密碼登錄,那么他們可以輕松地攔截該哈希密碼並使用該密碼登錄。

客戶端代碼的好壞或哈希算法的強弱都無關緊要-該原理從根本上來說是有缺陷的。

如已經建議的那樣,使用SSL。 除了以明文形式發送外,這還將對客戶端和服務器之間的所有傳輸進行加密,以防止竊聽。

如果您希望在不使用SSL的情況下具有中等安全性,請嘗試以下方法:

  1. 閱讀當前時間
  2. 與用戶輸入的密碼一致
  3. 生成哈希,md5只是您可以選擇的哈希算法之一,不是強制性的。
  4. 將所有用戶名,時間戳和哈希值發布到服務器。

在服務器端

  1. 收集三個POST變量
  2. 檢查時間戳記,僅接受可接受的時差
  3. 從數據庫中檢索密碼
  4. 在服務器端以相同的方式計算哈希
  5. 將計算結果與POST哈希進行比較

缺點:您需要在服務器端保留純文本密碼

替代方法:預哈希密碼,並在登錄時在javascript端加倍哈希。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM