一、简介
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实现注册登录过程中对密码的加密,比较简单,没有涉及加密后存入数据库而是直接存在servlet域中。这个方式主要是为了了解MD5的加密过程,适用于学习。
HTML实现基于MD5加密的登录注册界面源码
jsp+mysql 用户注册登录模块(包含MD5,验证码) myeclipse6.5
注意:jdbc需要自行适配,里面格式都布置好了,直接ctrl+F寻找关键字就好了,最重要的是LoginFrame里面的代码 首先,需要在项目中导入数据库...然后使用md5加密密码,并使用jdbc执行向数据库中插入新用户记录的操作。
Android 采用MD5注册登录,加密解密 https://blog.csdn.net/qq_31939617/article/details/80728459
以2次MD5技术实现登陆注册,可以保证用户信息安全,防止黑客窃取信息。
java中关于Springboot加密 md5加密,注册密码加密到数据库中的关键语句,md5加密语句
用SSH框架整合实现注册登录系统 注册登录系统几乎是每一个web程序必须拥有的功能,因此,在本次课程设计中将其单独提取出来,并使用SSH框架的整合来实现这个系统。虽然注册和登录系统并不复杂,但这两个子系统却...
用户注册与MD5加密,这个项目不错,值得学习
这是我自己写的一个Spring boot项目的登录源码,里面登录用到了动态验证码,Mybatis 逆向生成工具,密码使用Base64加密前端,后端解密以后,再用MD5加密到数据库比对。还有资源页面的增删改查和页面分页:...
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。它的应用场景包括:用户注册时确认密码...
ajax+md5实现网站登陆注册模块 注册时用ajax技术实现 用户,验证码检查 登陆时用ajax技术实现文本框提示,md5加密
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。它的应用场景包括:用户注册时确认密码...
注册登录中的MD5加密及图形验证码的实现。
通过MD5 加密注册用户名和密码 此加密算法 不可逆转 确保信息传输的完整一致性与 系统登录认证
Java编写的简单MD5工具类,用于登录校验、注册等功能模块中。
程序具有注册和登录两个功能,用户注册功能提示用户输入用户名和口令,实现用户名和用户口令的MD5散列值的一一对应。用户登录功能,提示用户输入用户名和口令,用户输入后口令正确,给出合法用户的提示;否则给出...
Mybatics,前端AJAX技术,SpringBoot、md5加密算法实现登录注册,在后端随机生成Salt值,然后采用MD5算法加密密码,将密码密文和salt值存入MYSQL数据
MD5加密文档.处理登录,注册的密码一些相关的操作
注册的时候要求密码是要加密的,所以也用到了加密技术MD5。 项目也用到了一些JeasyUI这个控件。所以控件要在官网下载,下载地址是:http://jeasyui.com/download/index.php 下载完成后,把项目放进我们的项目中我们...