繁体   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