javascript+Java 实现MD5加密登录密码
客户说我的***系统登录时密码是明文传输,不高兴,我对HTTPS不太了解,那我用MD5加密下,虽然不能保证万无一失,但也好过明文传输嘛。
说下大概的过程:打开登录的JSP页面时,生成一个随机字符串,放在session里面,以便后台也可以拿到。客户输入用户名和密码点击"登录"时,拿到密码和随机字符串,拼接在一起后利用js生成MD5字符串。然后用js把那个password的value改成MD5字符串,再提交表单。
后台拿到随机字符串和用户名和MD5字符串,通过用户名到数据库查询密码,用密码和随机字符串拼接在一起生成MD5字符串,用生成的MD5字符串和前台传过来的MD5字符串进行匹配,如果一致就通过验证。
------------------------------前台-------------------------------------
jsp页面生成随机数:
/** * md5加密(ITS) * @param str * @param charSet * @return */ public synchronized static final String getMD5Str(String str,String charSet) { //md5加密MessageDigest messageDigest = null; try { messageDigest = MessageDigest.getInstance("MD5"); messageDigest.reset(); if(charSet==null){messageDigest.update(str.getBytes());}else{messageDigest.update(str.getBytes(charSet)); }} catch (NoSuchAlgorithmException e) { log.error("md5 error:"+e.getMessage(),e);} catch (UnsupportedEncodingException e) { log.error("md5 error:"+e.getMessage(),e);} byte[] byteArray = messageDigest.digest(); StringBuffer md5StrBuff = new StringBuffer(); for (int i = 0; i < byteArray.length; i++) { if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i])); else md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i])); } return md5StrBuff.toString(); }上面的MessageDigest所在的包是: java.security.MessageDigest