Java登录加密。【非shiro框架】
2017-06-09 10:54
495 查看
使用org.apache.commons.codec包中的相关方法完成登录用户的加密。
1、用户注册。用户输入用户名,密码完成注册。
2、后台加密。可以使用用户名+密码组合加密,也可使用密码+盐值加密。调用org.apache.commons.codec中的相关加密方法完成自由组合加密。
3、用户验证。根据之前的加密方式再次生成一次加密码,对比与数据库存储的密码。
org.apache.commons.codec中提供了很多加密方法,可以用反编译工具打开看看。
网盘地址: 下载地址
简单的加密举例:
测试类:
结果:
org.apache.commons.codec包中的方法还有很多,有待继续研究。
1、用户注册。用户输入用户名,密码完成注册。
2、后台加密。可以使用用户名+密码组合加密,也可使用密码+盐值加密。调用org.apache.commons.codec中的相关加密方法完成自由组合加密。
3、用户验证。根据之前的加密方式再次生成一次加密码,对比与数据库存储的密码。
org.apache.commons.codec中提供了很多加密方法,可以用反编译工具打开看看。
网盘地址: 下载地址
简单的加密举例:
public class UserServiceImpl implements UserService { private UserDao userDao=new UserDaoImpl(); public User regist(User user) throws SQLException { if(user==null){ return null; } //得到一个盐值 String salt=gengeratorSalt(); user.setSalt(salt); //String saltSign=user.getAccount()+salt+user.getPassword(); String saltSign=salt; //String passwordDigist=DigestUtils.md5Hex(saltSign); String passwordDigist=Md5Crypt.apr1Crypt(user.getPassword(), saltSign); user.setPasswordDigist(passwordDigist); return userDao.save(user); } @Override public User auth(String account, String password) throws SQLException { User user=userDao.findByAccount(account); if(user==null){ return null; } Date lastLoginTime=user.getLastLoginTime(); //验证密码 String salt=user.getSalt(); String p1=Md5Crypt.apr1Crypt(password, salt); //比较两个密码 if(p1.equals(user.getPasswordDigist())){ //登录成功 修改最后一次登录的时间 user.setLastLoginTime(new Date()); user=userDao.update(user); user.setLastLoginTime(lastLoginTime); return user; } return null; } /** *产生随机的盐值(盐值可以按照自己的想法随意生成,并保存在数据库中以便验证) * @return */ private String gengeratorSalt(){ String str="abcdefghijklmnopqrstuvwxyz0123456789"; StringBuilder sb=new StringBuilder(); int length=16; Random random=new Random(System.currentTimeMillis()); for(int i=0;i<length;i++){ sb.append(str.charAt(random.nextInt(str.length()))); } return sb.toString(); } }
测试类:
public class TestUserService { private UserService userService; @Before public void setUp(){ userService=new UserServiceImpl(); } @After public void tearDown(){ userService=null; } @Test public void testRegist() throws SQLException{ String nikename="赵日天", account="zhaoritian@126.com", phone="15945682451", password="123456"; User user=new User(nikename,account,phone,password); user=userService.regist(user); Assert.assertNotNull(user.getId()); } @Test public void testAuth() throws SQLException{ String account="zhaoritian@126.com", password="123456"; User user=userService.auth(account, password); Assert.assertNull(user); } }
结果:
org.apache.commons.codec包中的方法还有很多,有待继续研究。
相关文章推荐
- shiro 权限控制框架 入门级实例(一)加密、登录验证
- java安全框架-Shiro学习笔记(八)-加密工具类
- SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能
- 单点登录cas与权限管理框架shiro集成-spring项目方式
- Java Security:Java加密框架(JCA)简要说明
- [转载]Java安全框架Shiro的使用示例
- java加密用户登录密码--不用MD5实现
- Java单点登录系统 JA-SIG CAS在grails项目中的应用(其它框架项目基本一样)
- Java 权限框架 Shiro 实战一:理论基础
- Java 加密框架 00 密码学基础
- Java 加密框架 02 Base64
- Java 加密框架 02 Base64
- Java安全框架—Shiro
- 我的java web登录RSA加密
- java大型企业级互联网框架平台 SpringMVC Mybatis Shiro Bootstrap
- Java Web 登录采用非对称加密(RSA算法)
- 腾讯登录加密方式的java实现
- 单点登录cas与权限管理框架shiro集成------spring项目方式
- shiro安全框架|基础知识:登录逻辑
- Java 加密框架 00 密码学基础