登录注册的加密

加密算法

 private static final byte[] DES_KEY = { 21, 1, -110, 82, -32, -85, -128, -65 };
    @SuppressWarnings("restriction")
    public static String encryptBasedDes(String data) {
        String encryptedData = null;
        try {
            // DES算法要求有一个可信任的随机数源
            SecureRandom sr = new SecureRandom();
            DESKeySpec deskey = new DESKeySpec(DES_KEY);
            // 创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            SecretKey key = keyFactory.generateSecret(deskey);
            // 加密对象
            Cipher cipher = Cipher.getInstance("DES");
            cipher.init(Cipher.ENCRYPT_MODE, key, sr);
            // 加密,并把字节数组编码成字符串
            encryptedData = new sun.misc.BASE64Encoder().encode(cipher.doFinal(data.getBytes()));
        } catch (Exception e) {
            // log.error("加密错误,错误信息:", e);
            throw new RuntimeException("加密错误,错误信息:", e);
        }
        return encryptedData;
    }
    @SuppressWarnings("restriction")
    public static String decryptBasedDes(String cryptData) {
        String decryptedData = null;
        try {
            // DES算法要求有一个可信任的随机数源
            SecureRandom sr = new SecureRandom();
            DESKeySpec deskey = new DESKeySpec(DES_KEY);
            // 创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            SecretKey key = keyFactory.generateSecret(deskey);
            // 解密对象
            Cipher cipher = Cipher.getInstance("DES");
            cipher.init(Cipher.DECRYPT_MODE, key, sr);
            // 把字符串进行解码,解码为为字节数组,并解密
            decryptedData = new String(cipher.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(cryptData)));
        } catch (Exception e) {
            throw new RuntimeException("解密错误,错误信息:", e);
        }
        return decryptedData;

 

注册功能:

 //注册功能
    @RequestMapping(value = "/register")
    public ModelAndView register(Management management) {
        ModelAndView mv = new ModelAndView();
        Management management1 =managementRepository.findByManagementPhone(management.getManagementPhone());
        List<Management> management2 = managementRepository.findAll();
        int lastpage=management2.size()/8;

        if (management1==null){
            management.setManagementPass(encryptBasedDes(management.getManagementPass()));
            managementRepository.save(management);

        }
        else {
            management.setManagementID(management1.getManagementID());
            management.setManagementPass(encryptBasedDes(management.getManagementPass()));
            managementRepository.save(management);

        }
       return new ModelAndView("redirect:/management/show?page="+lastpage);
    }

登录功能:

@RequestMapping(value = "/loginManagement")
    public ModelAndView login(Management management, HttpSession sessoin) {
        ModelAndView mv = new ModelAndView();
        //判断所输入账号密码是否匹配
        //如果匹配成功
        management.setManagementPass(encryptBasedDes(management.getManagementPass()));
        if (managementService.verifyManagement(management)) {
            //通过名字和密码找到该Management,并存进session
            Management management1=managementRepository.findByManagementPhoneAndAndManagementPass(management.getManagementPhone(), management.getManagementPass()).get(0);
            sessoin.setAttribute("management", management1);

            //从session获取该Management判定权限
            Management test=(Management)sessoin.getAttribute("management");
            switch (management1.getManagementRole()){
                case  "1":
                    mv.setViewName("");break;
                case "2":
                case "3":
                    mv.setViewName("");break;
            }
            mv.setViewName("/success.btl");
            return mv;
        }
        //如果匹配不成功
        else {
            mv.setViewName("/login.btl");
            return mv;
        }

效果:

 

posted @ 2018-08-06 22:13  Hiro-D  阅读(208)  评论(0编辑  收藏  举报