index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<%@page import="java.net.*" %>
<%@page import="comm.MakeMD5" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>MyIndex</title>
<meta http-equiv="imurl" content="no-cache">
</head> <body>
<%
boolean loginFlag=false;
String account=null;
String md5Account=null;
Cookie cookieArr[]=request.getCookies();
if(cookieArr!=null&&cookieArr.length>0){
for(Cookie cookie:cookieArr){
if(cookie.getName().equals("account")){
account=cookie.getValue();
account=URLDecoder.decode(account,"utf-8");
//System.out.print(account);
}
if(cookie.getName().equals("md5Account")){
md5Account=cookie.getValue();
md5Account=URLDecoder.decode(md5Account,"utf-8");
//System.out.print(md5Account);
}
}
} if(account!=null&&md5Account!=null){
loginFlag=md5Account.equals(MakeMD5.getMD5(account));
} if(loginFlag){
//request.getRequestDispatcher("successlogin.jsp").forward(request, response);
//response.sendRedirect("successlogin.jsp");
%>
<fieldset>
<legend>欢迎您回来</legend>
<table align="center">
<tr>
<td><%=account %>,欢迎您登陆本网站</td>
<td align="center">
<a href="foreverlogin?action=logout">注销登陆</a>
</td>
</tr>
</table>
</fieldset>
<%
}else{
%>
<fieldset>
<legend>用户登录</legend>
<form action="foreverlogin?action=login" method="post">
<table>
<tr>
<td>账&nbsp;&nbsp;号:</td>
<td><input type="text" name="account"></td>
</tr>
<tr>
<td>密&nbsp;&nbsp;码:</td>
<td><input type="text" name="password"></td>
</tr>
<tr>
<td>有效期:</td>
<td>
<input type="radio" name="timeout" value="-1" checked="checked">
关闭浏览器即失效
<input type="radio" name="timeout" value="<%=30*24*60*60%>">
30天内有效
<input type="radio" name="timeout" value="<%=Integer.MAX_VALUE%>">
永久有效
</td>
</tr>
<tr>
<td>
<input type="submit" value="登陆">&nbsp;
<input type="reset" value="重置">
</td>
</tr>
</table>
</form>
</fieldset>
<%
}
%>
</body>
</html>

src/comm/foreverlogin.java

package comm;

import java.io.IOException;
import java.net.URLEncoder; import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class foreverlogin extends HttpServlet {
private static final long serialVersionUID = 1L; public foreverlogin() {
super();
} public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
} public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request,response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8"); String action=request.getParameter("action");
if(action.equals("login")){
login(request,response);
}
else if(action.equals("logout")){
logout(request,response);
}
} //login
public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{
String account=request.getParameter("account");
//String password=request.getParameter("password");
int timeout=Integer.parseInt(request.getParameter("timeout")); String md5Account=MakeMD5.getMD5(account); //采用MD5算法加密
account=URLEncoder.encode(account,"utf-8"); //账号为中文时需要转换Unicode才能保存在Cookie中
Cookie accountCookie=new Cookie("account",account);
accountCookie.setMaxAge(timeout);
Cookie md5AccountCookie=new Cookie("md5Account",md5Account);
md5AccountCookie.setMaxAge(timeout);
response.addCookie(accountCookie);
response.addCookie(md5AccountCookie); //将线程休眠1秒后在执行
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //response.sendRedirect("cookie/resultlogin.jsp?"+System.currentTimeMillis());
response.sendRedirect("cookie/index.jsp?"+System.currentTimeMillis());
} //logout
public void logout(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{
Cookie accountCookie=new Cookie("account","");
accountCookie.setMaxAge(0);
Cookie md5AccountCookie=new Cookie("md5Account","");
md5AccountCookie.setMaxAge(0);
response.addCookie(accountCookie);
response.addCookie(md5AccountCookie); //将线程休眠一秒后在执行
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} response.sendRedirect("cookie/index.jsp?"+System.currentTimeMillis());
} public void init() throws ServletException {
// Put your code here
} }

src/comm/MakeMD5.java

package comm;

import java.security.MessageDigest;

public class MakeMD5 {
public final static String getMD5(String str){
// 用来将字节转换成 16 进制表示的字符
char hexDiagiArr[]={'0','1','2','3','4','5','6','7','8','9','0','a','b','c','d','e','f'};
MessageDigest digest=null;
try{
digest=MessageDigest.getInstance("MD5"); //创建MD5算法摘要
digest.update(str.getBytes()); //更新摘要
byte mdBytes[]=digest.digest(); //加密,并返回字节数组
//新建字符数组,长度为myBytes字节数组的2倍,用于保存加密后的值
char newCArr[]=new char[mdBytes.length*2];
int k=0;
for(int i=0;i<mdBytes.length;i++){
byte byte0=mdBytes[i];
newCArr[k++]=hexDiagiArr[byte0>>>4&0x0f]; //取字节中高 4 位的数字转换,>>>为逻辑右移,将符号位一起右移
newCArr[k++]=hexDiagiArr[byte0&0x0f]; //取字节中低 4 位的数字转换
//针对字符0-9的,0-9的ascii码值为0x30,0x31,0x32 0x33 ...0x39,
//因此与0x0f按位与后只保留个位上的书即0x0,0x1,。。。0x9
// 0000 1010
//& 0000 1111
// 0000 1010
}
return String.valueOf(newCArr); //将转换后的字符转换为字符串
}
catch(Exception e){
e.printStackTrace();
}
return null;
}
}

jsp------实现MD5加密的更多相关文章

  1. SpringSecurity 登录 - 以及Md5加密

    我们现在开放一个链接给其他系统,来访问我们的系统 http://localhost:8080/hulk-teller-web/haihui!init.jspa?loginId=teller01& ...

  2. 使用MD5加密的登陆demo

    最近接手了之前的一个项目,在看里面登陆模块的时候,遇到了一堆问题.现在记录下来. 这个登陆模块的逻辑是这样的 1 首先在登陆之前,调用后台的UserLoginAction类的getRandomKey方 ...

  3. Java实现对文本文件MD5加密并ftp传送到远程主机目录

    需求描述: 客户出完账之后需要把出账的数据以文本文件的方式传送给收入管理系统,客户以前是通过本地的一个工具软件上传的,由于安全监管的原因,不允许在本地使用工具上传,因此客户希望我们在已经上线使用的系统 ...

  4. JAVAEE——SSH项目实战05:用户注册、登陆校验拦截器、员工拜访客户功能和MD5加密

    作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7170519.html 一.用户注册   显示错误信息到页面上的另一种方法: public ...

  5. MD5加密 及 防止重复提交

    1.JSP页面 <%@page import="cn.gs.ly.app2.MD5Util"%> <%@page import="java.util.U ...

  6. 关于CryptoJS中md5加密以及aes加密的随笔

    最近项目中用到了各种加密,其中就包括从没有接触过得aes加密,因此从网上各种查,官方的一种说法: 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学 ...

  7. Android数据加密之MD5加密

    前言: 项目中无论是密码的存储或者说判断文件是否是同一文件,都会用到MD5算法,今天来总结一下MD5加密算法. 什么是MD5加密? MD5英文全称“Message-Digest Algorithm 5 ...

  8. android MD5加密

    public class MD5Uutils {    //MD5加密,32位    public static String MD5(String str) {        MessageDige ...

  9. IOS 杂笔-9 (MD5 加密)

    首先是一段对MD5的简介 *出自一位大牛之手* Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护 ...

  10. JS中使用MD5加密

    下载 MD5 使用MD5加密的方法:下载md5.js文件,在网页中引用该文件: < script type="text/javascript" src="md5.j ...

随机推荐

  1. Google play billing(Google play 内支付)

    准备工作 1. 通过Android SDK Manager下载extras中的Google Play services和Google Play Billing Library两个包. 2. 把下载的. ...

  2. 【插件开发】—— 1 Eclipse插件开发导盲

    [插件开发]—— 1 Eclipse插件开发导盲   在真正接触eclipse插件开发一个月后,对插件的开发过程以及技术要求,也有了一定的了解.遥想之前像无头苍蝇一样乱撞乱学,真心觉得浪费了不少时间. ...

  3. [MCSM] 蒙特卡罗统计方法

    起因 最开始的时候,写多了LDPCC误码率的仿真,心中便越来越有了疑惑.误码率仿真,多为Monte Carlo仿真,其原理是什么,仿真结果是否可靠,可靠程度是多少,如何衡量其可靠性这些问题我都很不清楚 ...

  4. hadoop的统计单词程序WordCount提示找不到WordCount类

    按这里的教程: http://www.imooc.com/learn/391 试验时,发现在wordcount的最后一步一直提示如下错误: Exception in thread "main ...

  5. [原创]Net实现Excel导入导出到数据库(附源码)

    关于数据库导出到Excel和SQLServer数据导出到Excel的例子,在博客园有很多的例子,自己根据网上搜集资料,自己做了亦歌简单的demo,现在分享出来供初学者学习交流使用. 一.数据库导入导出 ...

  6. 如何优雅的写一篇安利文-以Sugar ORM为例

    前言 我最近喜欢把写的十分优美的技术文章叫做安利文.首先,文章必须是原创而非软广:其次,阅读之后不仅能快速吸纳技术要点并入门开发,还能感同身受的体会作者热情洋溢的赞美和急于分享心得体验的心情,让人感觉 ...

  7. JavaScript基础1

    JavaScript写在<script></script>之间   <script type="text/javascript">表示在< ...

  8. C++实现反射机制

    NET下的很多技术都是基于反射机制来实现的,反射让.NET平台下的语言变得得心应手.最简单的,比如枚举类型,我们我可以很容易的获得一个枚举变量的数值以及其名称字符串. 可是,在C++中,枚举变量本质上 ...

  9. nhibernate入门使用经验

    最近项目中用到nhibernate,学到了一点.就在这里写一点. nhibernate是java世界的hibernate的.net版本,其工作原理和hibernate一样的.我们需要用hbm的文件来描 ...

  10. mongo里面根据对象字段的ID查询 db.Photo.find({'owner.$id':ObjectId('xxxx')}) , 并且使用forEach循环修改查询的数据

    var ones = db.Photo.find({'owner.$id':ObjectId("5344f0dab7c58e8e098b4567")}) db.Photo.find ...