zoukankan      html  css  js  c++  java
  • 登录注册的基本加密方法(可逆)

    加密算法

    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;
            }
    

      

      

  • 相关阅读:
    Mybatis和Spring整合也是能用BatchExecutor的
    与Spring整合的Mybatis没法真正使用BatchExecutor
    Mybatis和Spring整合后sqlsession啥时候关闭的
    Mybatis和Spring的整合原理
    Mybatis是怎么执行一条语句的
    8.11查询结果排序
    8.10、11(select分组和过滤)()
    8.7、8、9(select语句基本用法)(select语句基本运算符)(select聚合查询)
    8.4SQL(DML数据操作语言)-(insert插入数据)(updata更新数据),(delete数据)
    8.2数据库DDL语言(即数据库定义语言)(命名规则以及数据类型)
  • 原文地址:https://www.cnblogs.com/zhu573514187/p/9439403.html
Copyright © 2011-2022 走看看