`
IT阿狸
  • 浏览: 67141 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用MD5注册-登录

阅读更多

一、简介

        Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。
 
二、例子使用了Hibernate3.3和Struts2框架,链接Oracle11g数据库
 
三、实体类
package org.md5.entity;

/**
 * Users entity. @author MyEclipse Persistence Tools
 */

public class Users implements java.io.Serializable {

	// Fields

	private Integer id;
	private String name;
	private String password;

	// Constructors

	/** default constructor */
	public Users() {
	}

	/** full constructor */
	public Users(String name, String password) {
		this.name = name;
		this.password = password;
	}

	// Property accessors

	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return this.password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

}
 
四、使用MessageDigest实现MD5,SHA-1等加密
package org.md5.manage;

// 在Java中使用MessageDigest实现MD5,SHA-1等加密
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/*
 * TestEncrypt.java Description: A test progrm to encrypt a string using MD5 or SHA-1,etc.
 */

public class MessageEncrypt {

	/**
	 * @param strSrc 要加密的字符串
	 * @param encName 加密算法
	 * @return
	 */
	public static String encrypt(String strSrc, String encName) {
		// parameter strSrc is a string will be encrypted,
		// parameter encName is the algorithm name will be used.
		// encName dafault to "MD5"
		// 得到MessageDigest对象
		MessageDigest md = null;
		MessageEncrypt mept = new MessageEncrypt();
		// 加密后的字符串
		String strDes = null;
		// 要加密的字符串字节型数组
		byte[] bt = strSrc.getBytes();
		try {
			if (encName == null || encName.equals("")) {
				encName = "MD5";
			}
			md = MessageDigest.getInstance(encName);
			md.update(bt);
			// 通过执行诸如填充之类的最终操作完成哈希计算
			strDes = mept.bytes2Hex(md.digest()); // to HexString
		} catch (NoSuchAlgorithmException e) {
			System.out.println("Invalid algorithm.\n" + e.getMessage());
			return null;
		}
		return strDes;
	}

	// 将字节数组转换成16进制的字符串
	private String bytes2Hex(byte[] bts) {
		String des = "";
		String tmp = null;

		for (int i = 0; i < bts.length; i++) {
			tmp = (Integer.toHexString(bts[i] & 0xFF));
			if (tmp.length() == 1) {
				des += "0";
			}
			des += tmp;
		}
		return des;
	}

}
  
五、dao
package org.md5.dao;

public interface UserDao {

	void login(String name, String password);

	void registerUser(String name, String pass);

}
 
六、daoImpl
package org.md5.dao.impl;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.md5.dao.UserDao;
import org.md5.entity.Users;
import org.md5.manage.MessageEncrypt;
import org.md5.util.HibernateSessionFactory;

public class UserDaoImpl implements UserDao {

	/**
	 * 登录
	 */
	public void login(String name, String password) {
		Session session = HibernateSessionFactory.getSession();
		session.createQuery("from Users u where u.name=? and u.password=?")
				.setParameter(0, MessageEncrypt.encrypt(name, null))
				.setParameter(1, MessageEncrypt.encrypt(password, null));
		HibernateSessionFactory.closeSession();
	}

	/**
	 * 注册
	 */
	public void registerUser(String name, String pass) {
		Transaction tx = null;
		Session session = HibernateSessionFactory.getSession();
		Users u = new Users();
		u.setName(MessageEncrypt.encrypt(name, null));
		u.setPassword(MessageEncrypt.encrypt(pass, null));
		try {
			tx = session.beginTransaction();
			session.save(u);
			tx.commit();
		} catch (HibernateException e) {
			e.printStackTrace();
			tx.rollback();
		} finally {
			HibernateSessionFactory.closeSession();
		}
	}

}
 
七、action
package org.md5.action;

import org.md5.dao.UserDao;
import org.md5.dao.impl.UserDaoImpl;
import org.md5.entity.Users;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {

	private UserDao userDao = new UserDaoImpl();
	
	private Users user;
	
	private String name;
	private String password;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public Users getUser() {
		return user;
	}

	public void setUser(Users user) {
		this.user = user;
	}

	/**
	 * 登录
	 */
	public String login() {
		userDao.login(name, password);
		return SUCCESS;
	}
	
	/**
	 * 注册
	 */
	public String register() {
		userDao.registerUser(user.getName(), user.getPassword());
		return SUCCESS;
	}
}
 
八、struts配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>

	<package name="md5" extends="struts-default" namespace="/">
		<!-- 登录 -->
		<action name="login" class="org.md5.action.UserAction" method="login">
			<result>/login_success.jsp</result>
		</action>
		
		<!-- 注册 -->
		<action name="register" class="org.md5.action.UserAction" method="register">
			<result>/success.jsp</result>
			<result name="input">/register.jsp</result>
		</action>
	</package>
	
</struts>    
 
分享到:
评论

相关推荐

    MD5实现注册登录加密

    以下是对MD5实现注册登录加密的详细说明: 1. **MD5基本原理**:MD5算法将任意长度的输入(也叫做预映射)通过一系列复杂的数学运算(如异或、位移、加法等)转化为固定长度的128位(16字节)输出,通常用32个十六...

    HTML实现基于MD5加密的登录注册界面源码

    在这个项目中,我们将会探讨如何使用HTML构建登录和注册界面,并结合MD5加密技术来增强数据安全性。 首先,HTML(HyperText Markup Language)是用于创建网页的标准标记语言。在登录和注册界面中,HTML主要用于定义...

    jQuery-MD5-master-官方.zip

    在IT领域,数据的安全性和完整性至关重要,而MD5(Message-Digest Algorithm 5)作为一种广泛使用的哈希函数,为数据提供了可靠的校验和。当我们提到"jQuery-MD5-master-官方.zip",这显然与jQuery的一个插件有关,...

    jsp+mysql 用户注册登录模块(包含MD5,验证码)

    【标题】:“jsp+mysql 用户注册登录模块(包含MD5,验证码)” 【知识点详解】: 1. JSP(JavaServer Pages):JSP是一种基于Java的技术,用于创建动态网页。开发者可以在HTML页面中嵌入Java代码,实现服务器端的...

    用2次MD5技术实现登陆注册

    总的来说,2次MD5技术是提高用户登录注册安全性的一种有效方法,但需要注意的是,随着计算能力的提升,MD5的碰撞概率也在增加,因此现在更推荐使用更强的哈希算法,如SHA-256或bcrypt,以提供更高的安全水平。...

    Android 采用MD5注册登录,加密解密

    "Android采用MD5注册登录,加密解密"这个主题涉及到的是如何利用MD5算法来处理用户的敏感信息,如密码,以增强数据的安全性。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它可以将任意长度的输入...

    分页-上传图片-MD5加密-验证码-在线编辑器\(本下载为分页,待续)

    3. **MD5加密**:MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它可以将任意长度的信息转化为固定长度的摘要。在Web开发中,MD5常用于密码存储,将明文密码转换为不可逆的哈希值,以此保护用户信息...

    分页-上传图片-MD5加密-验证码-在线编辑器\(本例为在线编译器)

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,用于生成数据的固定长度摘要。在Web应用中,MD5常用于密码存储,通过将用户输入的密码转化为不可逆的哈希值,即使数据库被泄露,原始密码也无法轻易被...

    md5.min.js

    例如,当用户注册时,可以将输入的密码进行MD5加密,然后存储在数据库中,登录时再对比加密后的密码,以提高系统的安全性。同时,这两个库也可以用于验证文件的完整性,通过比较文件内容的MD5值,确认文件是否在传输...

    java中关于Springboot加密 md5加密,注册密码加密到数据库中的关键语句,md5加密语句.pdf

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它将任意长度的数据转化为固定长度的输出,通常用于数据校验和密码存储。在Spring Boot中,我们可以方便地利用Apache Commons Codec库中的`DigestUtils...

    Laravel开发-laravel-hashing-md5

    `laravel-hashing-md5`可能是指一个示例项目或教程,专注于使用MD5算法进行哈希操作。虽然MD5在现代安全标准下不再推荐用于密码存储,但了解其在Laravel中的使用仍有一定价值。 Laravel提供了`Hash`门面,它封装了...

    javascript md5加密 js文件

    - **密码存储**:在用户注册时,将用户输入的密码进行MD5加密存储,登录时再进行同样的加密,与存储的哈希值对比,不直接比较原始密码,增加安全性。 - **文件校验**:计算文件的MD5值,可用于验证文件是否完整或...

    如何使用MD5加密ASP数据库

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的信息映射为固定长度的输出,通常是一个128位的二进制数,以32位十六进制数的形式表示。在IT领域,MD5主要用于数据完整性校验和密码...

    分页-上传图片-MD5加密-验证码-在线编辑器

    **MD5加密(Message-Digest Algorithm 5)**:MD5是一种广泛使用的哈希函数,可将任意长度的信息转化为固定长度的摘要。在IT安全领域,MD5常用于密码存储,虽然存在碰撞风险,但可以防止原始数据直接被读取。另外,MD5...

    ajax+md5实现网站登陆注册模块

    "Ajax+MD5实现网站登录注册模块"正是结合了这两方面的技术,旨在提供无刷新的交互体验以及数据的安全传输。接下来,我们将深入探讨这个主题,了解如何利用Ajax和MD5来构建高效且安全的登录注册系统。 Ajax...

    Java 登录、注册界面(md5加密、jdbc连接mysql)

    注意:jdbc需要自行适配,里面格式都布置好了,直接ctrl+F寻找关键字就好了,最重要的是LoginFrame里面的代码 首先,需要在项目中导入数据库...然后使用md5加密密码,并使用jdbc执行向数据库中插入新用户记录的操作。

    HMAC-MD5算法 keil C实现代码

    阿里云设备登录一机一密和一型一密都需要用到HMAC-MD5算法 什么是 HMAC-MD5? 1、比如你和对方共享了一个密钥K,现在你要发消息给对方,既要保证消息没有被篡改,又要能证明信息确实是你本人发的,那么就把原信息...

    MD5加密MD5加密

    在实际应用中,如文件的注册和登录验证过程中,可能会涉及到图片的MD5加密。例如,用户上传的头像图片会被计算MD5值,这个值可以用来防止重复上传相同的图片,或者在下载时验证图片的完整性。但要注意,对于密码,不...

    MD5数据库兑换

    “MD5数据库兑换”这一术语在网络安全领域并不常见,但从上下文推测,这里可能指的是使用MD5哈希值来检索或验证数据库中存储的信息的过程。例如,在密码找回或验证场景中,用户提供的信息(如用户名或电子邮件地址)...

    JSP基于MD5的登录程序

    本项目“JSP基于MD5的登录程序”就是这样一个关注用户信息安全的应用实例。这里,我们将深入探讨JSP(Java Server Pages)技术和MD5(Message-Digest Algorithm 5)哈希加密在登录系统中的应用。 JSP是Java平台上的...

Global site tag (gtag.js) - Google Analytics