我是程序员
经过特定的算法之后,得到了消息摘要为: adaf02515dfds7885csdfcdsc
commons-codec
<dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.10</version> </dependency>
@Test public void test1(){ String str1="你们好,未来的程序员!"; String strMessageString=DigestUtils.md5Hex(str1); System.out.println(strMessageString); } //读取文件 @Test public void test2()throws IOException{ InputStream inputStream=new FileInputStream(new File("/home/chenjiabing/Documents/Blog/AOP.md")); String message=DigestUtils.md5Hex(inputStream); System.out.println(message); }
### 加盐处理 salt
@Test public void test3(){ String str1="123456"; String salt="这个是加盐处理"; //需要加盐,随便定义一个字符串 String message=DigestUtils.md5Hex(str1+salt); //获取加盐之后的消息摘要 System.out.println(message); }
MD5Password工具
类,用于加密密码 /** * 密码加密的类 * @author chenjiabing */ public class MD5Password{ private final static String SALT="加油,骚年!"; //加盐处理 /** * 获取加密之后的密码 * @param password 用户输入的密码 * @return 加密之后的密码 */ public static String getMd5Password(String password){ return DigestUtils.md5Hex(password+SALT); //使用了加盐处理 } }
/** * 注册 * 1. 调用selectUserByUserName(User user)方法判断用户名是否存在,返回对象u * 2. 判断u是否为null, * 3. 如果为null,调用insertUser(user)方法添加 * 4. 如果不为null,抛出异常提示controller用户名存在(UserNameAlreadyExistException) */ public void register(User user)throws UserNameAlreadyExistException { User u=userMapper.selectUserByUserName(user.getUsername()); //调用usermapper中的方法 if (u!=null) { //如果u不为null,表示用户名已经存在与数据库中,不可以再次注册了,因此抛出异常 throw new UserNameAlreadyExistException("用户名已经存在,请重新输入!!!"); }else { //如果u==null,表示用户名不存在,可以添加 //获取加密之后的密码 String md5Password=MD5Password.getMd5Password(user.getPassword()); //将加密之后的密码设置到user中,保存到数据库中 user.setPassword(md5Password); userMapper.insertUser(user); //直接调用持久层方法插入数据即可 } }
/** * 登录方法 * 1. 通过selectUserByUserName返回user对象 * 2.判断user是否为null * 3.如果user=null,抛出UserNotFoundException异常 * 4.如果user!=null,那么验证其中的密码是否正确 * 5.如果密码不匹配,抛出PassWordNotMatchException异常 * 6. 如果密码匹配,那么返回user对象 * @throws UserNotFoundException * @throws PassWordNotMatchException */ public User login(String userName, String passWord)throws UserNotFoundException, PassWordNotMatchException { User user=userMapper.selectUserByUserName(userName); //根据用户名查询,返回user对象 if (user==null) { //user为null,表示用户名不存在 throw new UserNotFoundException("用户名不存在"); }else { //如果用户名存在,验证密码 //获取加密之后的密码,实际是一个消息摘要 String md5Password=MD5Password.getMd5Password(passWord); //使用加密之后获取的消息摘要和数据库中对应的密码比较 if (md5Password.equals(user.getPassword())) { //如果密码匹配 return user; //返回user对象即可 }else { //如果密码不相同,那么直接抛出密码不匹配的异常即可 throw new PassWordNotMatchException("密码不匹配"); } } }
/** * 修改密码 * 1. 根据id查询用户信息,返回user * 2. 如果user=null,抛出用户不存在的异常 * 3. 如果user!=null,比较user中的密码和用户输入的旧密码oldPassword是否相同 * 4. 如果密码不相同,抛出密码不匹配的异常 * 5. 如果密码相同,表示用户输入的旧密码是正确的,那么更新密码即可 */ public void updatePassword(Integer id, String oldPassword, String newPassword) throws UserNotFoundException, PassWordNotMatchException { User user=userMapper.seletUserById(id); //根据id查询,返回user对象 if (user==null) { //如果用户不存在 throw new UserNotFoundException("当前登录的用户不存在"); //抛出用户不存在的异常 }else { //如果当前登录的用户存在 //获取旧密码的加密之后的密码 String oldMd5Password=MD5Password.getMd5Password(oldPassword); //使用加密之后的密码和数据库中的密码比较 if (!user.getPassword().equals(oldMd5Password)) { //如果返回的user对象中的密码和用户输入的旧密码不匹配 throw new PassWordNotMatchException("输入的旧密码不匹配"); }else { //如果输出的旧密码正确 User u1=new User(); //创建User对象,封装修改所需的参数 //获取加密之后的新密码 String newMd5Password=MD5Password.getMd5Password(newPassword); u1.setPassword(newMd5Password); //封装新密码,其中是加密之后的密码 u1.setId(id); //封装id userMapper.update(u1); //调用修改的方法 } } }