MD5简单加密

来源:互联网 发布:李谷一 知乎 编辑:程序博客网 时间:2024/06/05 18:08

MD5工具类

public class MyMD5Util {    public static String md5(String password) throws NoSuchAlgorithmException{        //生成实现指定摘要算法的 MessageDigest 对象。        MessageDigest md5=MessageDigest.getInstance("MD5");        //使用指定的字节数组跟新摘要        md5.update(password.getBytes());        //调用摘要方法返回一个16位的byte数组        byte [] b=md5.digest();          //把数组转换成字符串 [95, 77, -52, 59, 90, -89, 101, -42, 29, -125, 39, -34, -72, -126, -49, -103]//      System.out.println(Arrays.toString(b));        String str="";  //用来接受新生成的字符串        int bvalue=0;   //接受B[i]的值,byte+一个数  如果>127会成负数        for (int i = 0; i < b.length; i++) {            bvalue=b[i];            if(b[i]<0){                bvalue+=256;   //把负数转换成正数   自己想怎么定义怎么定义,大于0就行                            //最好大于16  Integer.toHexString(x);  x大于等于16会形成一个2位的二进制数字                            //小于16只有一位,不方便统计位数            }                   //java.lang.Integer.toHexString() 方法返回为无符号整数基数为16的整数参数的字符串表示形式。                //以下字符作为十六进制数字:0123456789ABCDEF                String s=Integer.toHexString(bvalue);  //一个两位的十六静止数字                str+=s;  //16次 所以是32位        }        return str;    }}

注册的时候进行密码加密:

@Override    public TaoTaoResult register(TbUser user) {        // TODO Auto-generated method stub        //补全user信息        user.setCreated(new Date());        user.setUpdated(new Date());        //密码加密  MD5加密        //生成一个MD5加密计算        String encryptedPwd=null;        try {            encryptedPwd=MyMD5Util.md5(user.getPassword());        } catch (NoSuchAlgorithmException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }               user.setPassword(encryptedPwd);        userMapper.insertSelective(user);           return new TaoTaoResult(200, null);         }

登录的时候将传过来的密码进行同样的加密,然后在对面数据库中的密码,判断是否相同

@Override    public TaoTaoResult login(String username,String password) {        // TODO Auto-generated method stub        //根据username获取用户信息        TbUserExample example =new TbUserExample();        example.createCriteria().andUsernameEqualTo(username);        List<TbUser> list=userMapper.selectByExample(example);        //把pssword进行加密        String encryptedPwd=null;        try {            encryptedPwd=MyMD5Util.md5(password);        } catch (NoSuchAlgorithmException e1) {            // TODO Auto-generated catch block            e1.printStackTrace();        }        //进行比较          if(list.size()==0||list==null){            return new TaoTaoResult(400, false, "帐号不存在");        }else{            //判断密码是否匹配            if(list.get(0).getPassword().equals(encryptedPwd)){                //帐号密码匹配                //生成token,把token保存到redis                //返回登录成功  把token写入到cookie                String token=UUID.randomUUID().toString();                //jedis注入jedisCluster                //value 是对象信息                ObjectMapper mapper=new ObjectMapper();                String json=null;                try {                    json = mapper.writeValueAsString(list.get(0));                } catch (JsonProcessingException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }                jedisCluster.set(token, json);                //保存到redis里面                jedisCluster.set("USER_LOGIN_SUCCESS:"+token, json);                //设置过期时间                jedisCluster.expire("USER_LOGIN_SUCCESS:"+token, 30*60);                return new TaoTaoResult(200, "USER_LOGIN_SUCCESS:"+token, "ok");            }else{                return new TaoTaoResult(400, false, "密码错误");            }        }    }