whycxzp
2022-03-07 453bb7a946a35af96efddb334f6eef0a1b4a0757
更新密码逻辑
4个文件已修改
59 ■■■■■ 已修改文件
src/main/java/com/whyc/Application.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/PasswordResetService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/util/AESUtil.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/util/RSAUtil.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/Application.java
@@ -31,20 +31,6 @@
        SpringApplication.run(Application.class,args);
        ApplicationContext applicationContext = SpringUtil.getApplicationContext();
        PasswordResetService service = (PasswordResetService) applicationContext.getBean("passwordResetService");
        //密码格式预读及手动确认
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用做校验的用户名:");
        String name = sc.nextLine();
        Response response = service.preCheck(name);
        System.out.println("当前密码模式为:"+response.getMsg()+",密码为"+response.getData());
        System.out.println("核查正确请输入y,不正确请输入n");
        String flag = sc.nextLine();
        if(!flag.toUpperCase().equals("Y")){
            System.out.println("密码解析失败,终止程序");
            System.exit(1);
        }
        //进行密码修改
        service.passwordReset();
        //密码格式重置
        service.passwordReset();
src/main/java/com/whyc/service/PasswordResetService.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.util.StringUtil;
import com.whyc.dto.Response;
import com.whyc.mapper.UserInfMapper;
import com.whyc.pojo.UserInf;
@@ -28,9 +29,7 @@
    @Resource
    private UserInfMapper userInfMapper;
    private String encryptType = null;
    public Response<String> preCheck(String name) {
    /*public Response<String> preCheck(String name) {
        Response<String> response = new Response<>();
        QueryWrapper<UserInf> queryWrapper = Wrappers.query();
        queryWrapper.select("uSnId as SNId").eq("uName",name).last(" limit 1");
@@ -40,7 +39,7 @@
        response.setData(password);
        response.setMsg(encryptType);
        return response;
    }
    }*/
    @Transactional
    public void passwordReset(){
@@ -49,18 +48,11 @@
        queryWrapper.select("uId as id","uSnId as SNId");
        List<UserInf> userInfList = userInfMapper.selectList(queryWrapper);
        userInfList.stream().forEach(userInf->{
            if(userInf.getId() == 0){
            /*if(userInf.getId() == 0){
                return;
            }
            }*/
            //明文,需要判断获取
            String password = null;
            String snId = userInf.getSNId();
            switch (encryptType){
                case "AES": password = AESUtil.desEncrypt(snId); break;
                case "Common": password = snId;break;
                case "RSA": password = RSAUtil.decrypt(snId,RSAUtil.getPrivateKey());break;
                default:break;
            }
            String password = parsePassword(userInf.getSNId());
            password = password.trim();
            //将明文RSA加密回写到uSnId和upassword
            String passwordRSA = RSAUtil.encrypt(password, RSAUtil.getPublicKey());
@@ -68,20 +60,17 @@
            userInf.setPassword(passwordRSA);
            //userInfMapper.updateById(userInf);
        });
        userInfMapper.updateBatch(userInfList);
        //userInfMapper.updateBatch(userInfList);
    }
    private String parsePassword(String passwordData){
        //明文,需要判断获取
        String password;
        password = AESUtil.desEncrypt(passwordData);
        encryptType = "AES";
        if(password == null || !verifyPassword(password.trim())){
        if(StringUtil.isEmpty(password) || !verifyPassword(password.trim())){
            password = RSAUtil.decrypt(passwordData, RSAUtil.getPrivateKey());
            encryptType = "RSA";
            if(password == null || !verifyPassword(password.trim())){
            if(StringUtil.isEmpty(password) || !verifyPassword(password.trim())){
                password = passwordData;
                encryptType = "Common";
            }
        }
        return password.trim();
src/main/java/com/whyc/util/AESUtil.java
@@ -179,4 +179,9 @@
        }
    }
    public static void main(String[] args) {
        String h = desEncrypt("哈额");
        System.out.println(h);
    }
}
src/main/java/com/whyc/util/RSAUtil.java
@@ -1,6 +1,7 @@
package com.whyc.util;
import com.github.pagehelper.util.StringUtil;
import org.apache.tomcat.util.codec.binary.Base64;
import javax.crypto.Cipher;
@@ -205,14 +206,16 @@
    public static void main(String[] args) {
        try {
            String word = "123456";
            String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCPpJ3j+SHQ69lqq+ShV7deA40Y+8rYra6rr4ReOJ+UE7ek8tsJJrcy1xMO1SophJdHXXwSNbZWhnJW9GlIq1Um6IplkwFc/AtyoeJDP3EJtUZgI5H6fSz0BPLFHn18C0Nxz1Br109U07DqQdMsarcBmKXYQw+2oZOz0KpA5b0FawIDAQAB";
            String privateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAI+kneP5IdDr2Wqr5KFXt14DjRj7ytitrquvhF44n5QTt6Ty2wkmtzLXEw7VKimEl0ddfBI1tlaGclb0aUirVSboimWTAVz8C3Kh4kM/cQm1RmAjkfp9LPQE8sUefXwLQ3HPUGvXT1TTsOpB0yxqtwGYpdhDD7ahk7PQqkDlvQVrAgMBAAECgYA8ASdX4W2n6a4kKnRSleLqqg8aHazqAPvTinmAJqU65VW02SJ42yxyV3gFnTSErXfIfxviO3/U+0ruWiFVEwV5oDEh0dOd+HHGm4YzFXIRglMeRBgLuVJ+owzoVDwZstiIBa69DIjaJtmpSf5FjwxAth+gtCv3e11IXHraKN720QJBAMPMB1WtmpRGYHxWVYjKSL+RGw+h3gMQLk3exZjhmYRlXuqfVZ2Zol+NazDc59K5f+geMdJ0/X2kKnKLVjWzYHMCQQC7z1cFYswtLemxGfj+dwlVC01VL4pKa7HGHl/FAQ2UNYZY2d5hE/nXYbTpfI0gMowX926/aFpia7NbAUJO7WEpAkAyUFa+LJthaOhYazMVsK2bFKW4kabkcJ8Fga6TR73UaNxIPGOa2SUBmuylpM6ptuNoeYHiDBAr3ijOQIIJ0KuDAkBy9fPahCNe9F+73J4hhVPdDtIDdto7u7hSAX215XMeabUW5iXNXqDsSg6nbWolb0t50CemWoYZALwE1Lx1+7AhAkEAoZtFt+2skjAxHEqNUye4vKBqB2Ng/wmfitCfT34lXWQsxs4BGk/8eQMzkam9bcB7FcinolxHF/1UjsUYpI+AgA==";
            //String word = "123456";
            //String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCPpJ3j+SHQ69lqq+ShV7deA40Y+8rYra6rr4ReOJ+UE7ek8tsJJrcy1xMO1SophJdHXXwSNbZWhnJW9GlIq1Um6IplkwFc/AtyoeJDP3EJtUZgI5H6fSz0BPLFHn18C0Nxz1Br109U07DqQdMsarcBmKXYQw+2oZOz0KpA5b0FawIDAQAB";
            //String privateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAI+kneP5IdDr2Wqr5KFXt14DjRj7ytitrquvhF44n5QTt6Ty2wkmtzLXEw7VKimEl0ddfBI1tlaGclb0aUirVSboimWTAVz8C3Kh4kM/cQm1RmAjkfp9LPQE8sUefXwLQ3HPUGvXT1TTsOpB0yxqtwGYpdhDD7ahk7PQqkDlvQVrAgMBAAECgYA8ASdX4W2n6a4kKnRSleLqqg8aHazqAPvTinmAJqU65VW02SJ42yxyV3gFnTSErXfIfxviO3/U+0ruWiFVEwV5oDEh0dOd+HHGm4YzFXIRglMeRBgLuVJ+owzoVDwZstiIBa69DIjaJtmpSf5FjwxAth+gtCv3e11IXHraKN720QJBAMPMB1WtmpRGYHxWVYjKSL+RGw+h3gMQLk3exZjhmYRlXuqfVZ2Zol+NazDc59K5f+geMdJ0/X2kKnKLVjWzYHMCQQC7z1cFYswtLemxGfj+dwlVC01VL4pKa7HGHl/FAQ2UNYZY2d5hE/nXYbTpfI0gMowX926/aFpia7NbAUJO7WEpAkAyUFa+LJthaOhYazMVsK2bFKW4kabkcJ8Fga6TR73UaNxIPGOa2SUBmuylpM6ptuNoeYHiDBAr3ijOQIIJ0KuDAkBy9fPahCNe9F+73J4hhVPdDtIDdto7u7hSAX215XMeabUW5iXNXqDsSg6nbWolb0t50CemWoYZALwE1Lx1+7AhAkEAoZtFt+2skjAxHEqNUye4vKBqB2Ng/wmfitCfT34lXWQsxs4BGk/8eQMzkam9bcB7FcinolxHF/1UjsUYpI+AgA==";
            //List<String> keyPair = getKeyPair();
            //String encryptWord = encrypt(word, getPublicKey(keyPair.get(0)));
            //System.out.println("加密后的字符串:"+encryptWord);
            String encryptWord = "T8JGNiTKjeGxsy1klDEP6sgEbRIVrbC6KJt06RTY+KuK27SFU+Ch6fCE4wDsJRjfm0mr5DiHb1DZUOtEG6g4gv8F+5S7hTRtoaQkSxCCmnY7NMQKmkMl71Yvr9grx1KOrFUZCCymfcJGv0Dat7DPF/cDebnPN6IHpx+CS9u5pXI=";
            //String encryptWord = "T8JGNiTKjeGxsy1klDEP6sgEbRIVrbC6KJt06RTY+KuK27SFU+Ch6fCE4wDsJRjfm0mr5DiHb1DZUOtEG6g4gv8F+5S7hTRtoaQkSxCCmnY7NMQKmkMl71Yvr9grx1KOrFUZCCymfcJGv0Dat7DPF/cDebnPN6IHpx+CS9u5pXI=";
            String encryptWord = "h";
            String originWord = decrypt(encryptWord, getPrivateKey(privateKey));
            System.out.println(StringUtil.isEmpty(originWord));
            System.out.println("解密后的字符串:"+originWord);
        } catch (Exception e) {
            e.printStackTrace();