您的位置:首页 > 编程语言 > Java开发

Java登录加密。【非shiro框架】

2017-06-09 10:54 495 查看
使用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包中的方法还有很多,有待继续研究。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息