一、简介
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>
相关推荐
在这个项目中,我们将会探讨如何使用HTML构建登录和注册界面,并结合MD5加密技术来增强数据安全性。 首先,HTML(HyperText Markup Language)是用于创建网页的标准标记语言。在登录和注册界面中,HTML主要用于定义...
以下是对MD5实现注册登录加密的详细说明: 1. **MD5基本原理**:MD5算法将任意长度的输入(也叫做预映射)通过一系列复杂的数学运算(如异或、位移、加法等)转化为固定长度的128位(16字节)输出,通常用32个十六...
在IT领域,数据的安全性和完整性至关重要,而MD5(Message-Digest Algorithm 5)作为一种广泛使用的哈希函数,为数据提供了可靠的校验和。当我们提到"jQuery-MD5-master-官方.zip",这显然与jQuery的一个插件有关,...
【标题】:“jsp+mysql 用户注册登录模块(包含MD5,验证码)” 【知识点详解】: 1. JSP(JavaServer Pages):JSP是一种基于Java的技术,用于创建动态网页。开发者可以在HTML页面中嵌入Java代码,实现服务器端的...
总的来说,2次MD5技术是提高用户登录注册安全性的一种有效方法,但需要注意的是,随着计算能力的提升,MD5的碰撞概率也在增加,因此现在更推荐使用更强的哈希算法,如SHA-256或bcrypt,以提供更高的安全水平。...
"Android采用MD5注册登录,加密解密"这个主题涉及到的是如何利用MD5算法来处理用户的敏感信息,如密码,以增强数据的安全性。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它可以将任意长度的输入...
3. **MD5加密**:MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它可以将任意长度的信息转化为固定长度的摘要。在Web开发中,MD5常用于密码存储,将明文密码转换为不可逆的哈希值,以此保护用户信息...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,用于生成数据的固定长度摘要。在Web应用中,MD5常用于密码存储,通过将用户输入的密码转化为不可逆的哈希值,即使数据库被泄露,原始密码也无法轻易被...
例如,当用户注册时,可以将输入的密码进行MD5加密,然后存储在数据库中,登录时再对比加密后的密码,以提高系统的安全性。同时,这两个库也可以用于验证文件的完整性,通过比较文件内容的MD5值,确认文件是否在传输...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它将任意长度的数据转化为固定长度的输出,通常用于数据校验和密码存储。在Spring Boot中,我们可以方便地利用Apache Commons Codec库中的`DigestUtils...
`laravel-hashing-md5`可能是指一个示例项目或教程,专注于使用MD5算法进行哈希操作。虽然MD5在现代安全标准下不再推荐用于密码存储,但了解其在Laravel中的使用仍有一定价值。 Laravel提供了`Hash`门面,它封装了...
- **密码存储**:在用户注册时,将用户输入的密码进行MD5加密存储,登录时再进行同样的加密,与存储的哈希值对比,不直接比较原始密码,增加安全性。 - **文件校验**:计算文件的MD5值,可用于验证文件是否完整或...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的信息映射为固定长度的输出,通常是一个128位的二进制数,以32位十六进制数的形式表示。在IT领域,MD5主要用于数据完整性校验和密码...
**MD5加密(Message-Digest Algorithm 5)**:MD5是一种广泛使用的哈希函数,可将任意长度的信息转化为固定长度的摘要。在IT安全领域,MD5常用于密码存储,虽然存在碰撞风险,但可以防止原始数据直接被读取。另外,MD5...
"Ajax+MD5实现网站登录注册模块"正是结合了这两方面的技术,旨在提供无刷新的交互体验以及数据的安全传输。接下来,我们将深入探讨这个主题,了解如何利用Ajax和MD5来构建高效且安全的登录注册系统。 Ajax...
注意:jdbc需要自行适配,里面格式都布置好了,直接ctrl+F寻找关键字就好了,最重要的是LoginFrame里面的代码 首先,需要在项目中导入数据库...然后使用md5加密密码,并使用jdbc执行向数据库中插入新用户记录的操作。
阿里云设备登录一机一密和一型一密都需要用到HMAC-MD5算法 什么是 HMAC-MD5? 1、比如你和对方共享了一个密钥K,现在你要发消息给对方,既要保证消息没有被篡改,又要能证明信息确实是你本人发的,那么就把原信息...
“MD5数据库兑换”这一术语在网络安全领域并不常见,但从上下文推测,这里可能指的是使用MD5哈希值来检索或验证数据库中存储的信息的过程。例如,在密码找回或验证场景中,用户提供的信息(如用户名或电子邮件地址)...
本项目“JSP基于MD5的登录程序”就是这样一个关注用户信息安全的应用实例。这里,我们将深入探讨JSP(Java Server Pages)技术和MD5(Message-Digest Algorithm 5)哈希加密在登录系统中的应用。 JSP是Java平台上的...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的信息映射为固定长度的输出,通常是一个128位的二进制数,以32位十六进制数的形式表示。MD5由美国计算机科学家罗纳德·李维斯特...