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