javaweb关于客户端密码md5加密后被抓包工具抓取的问题

JavaScript017

javaweb关于客户端密码md5加密后被抓包工具抓取的问题,第1张

你描述的问题有点像CSRF攻击,而且你提出来的办法有一定的局限性,比如说如果黑客是同一个局域网的人,这种判断ip地址的方法可能会失效。

其实只要使用https就不存在这种问题,就算是中间被人截取了加密的密码,然后用加密的密码提交表单,最后与后台数据库匹配成功也没有用。因为匹配成功之后,服务端给黑客发送的信息也是经过加密的,但是黑客是不知道密钥,不知道如何对这段信息进行解密,所以不会登陆成功的。这把密钥只有客户端和服务端知道,所有题主担心的问题用https能够解决,这是我的一点见解。

import java.security.MessageDigest

import java.security.NoSuchAlgorithmException

public class md5 {

public String str

public void md5s(String plainText) {

try {

MessageDigest md = MessageDigest.getInstance("MD5")

md.update(plainText.getBytes())

byte b[] = md.digest()

int i

StringBuffer buf = new StringBuffer("")

for (int offset = 0offset <b.lengthoffset++) {

i = b[offset]

if (i <0)

i += 256

if (i <16)

buf.append("0")

buf.append(Integer.toHexString(i))

}

str = buf.toString()

System.out.println("result: " + buf.toString())// 32位的加密

System.out.println("result: " + buf.toString().substring(8, 24))// 16位的加密

} catch (NoSuchAlgorithmException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

public static void main(String agrs[]) {

md5 md51 = new md5()

md51.md5s("4")//加密4

}

}

有必要的,md5就是为了防止人偷窥,而当密码很短的时候,利用暴力搜索也比较容易搜索到,只有密码强度足够的情况下才有意义,你想转换也就没那么容易了。md5类hash算法的设计初衷就是单向,即不可逆。