Преглед изворни кода

improvement: 更新加密算法

ChenSiTong пре 6 година
родитељ
комит
125d7cbfdd

+ 0 - 2
src/main/java/nju/seec/helper/HelperApplication.java

@@ -2,7 +2,6 @@ package nju.seec.helper;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
 import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
@@ -10,7 +9,6 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 /**
  * @author cst
  */
-@ConfigurationPropertiesScan("nju.seec.helper.config.properties")
 @EnableTransactionManagement
 @EnableAsync
 @EnableJpaAuditing

+ 4 - 6
src/main/java/nju/seec/helper/service/impl/CourseServiceImpl.java

@@ -12,7 +12,6 @@ import nju.seec.helper.enums.ExceptionType;
 import nju.seec.helper.enums.UserType;
 import nju.seec.helper.exception.HelperException;
 import nju.seec.helper.service.CourseService;
-import nju.seec.helper.util.EncryptUtils;
 import nju.seec.helper.vo.CourseVO;
 import nju.seec.helper.vo.UserVO;
 import org.springframework.dao.DataIntegrityViolationException;
@@ -46,8 +45,7 @@ public class CourseServiceImpl implements CourseService {
                                     .setTeacher(userDAO.findUserById(teacher.getId()))
                                     .setName(courseDTO.getName())
                                     .setBio(courseDTO.getBio())
-                                    .setCode(EncryptUtils.encode(courseDTO.getCode()))
-                    )
+                                    .setCode(courseDTO.getCode()))
             );
         } catch (DataIntegrityViolationException e) {
             throw HelperException.of(ExceptionType.CONFLICT, "创建失败,请检查课程信息是否正确且不与已有课程冲突");
@@ -68,7 +66,7 @@ public class CourseServiceImpl implements CourseService {
                     courseDAO.save(
                             course.setName(courseDTO.getName())
                                     .setBio(courseDTO.getBio())
-                                    .setCode(EncryptUtils.encode(courseDTO.getCode()))
+                                    .setCode(courseDTO.getCode())
                     )
             );
         } catch (DataIntegrityViolationException e) {
@@ -98,7 +96,7 @@ public class CourseServiceImpl implements CourseService {
             throw HelperException.of(ExceptionType.CONFLICT, "您已选课");
         }
 
-        if (!courseDAO.existsByIdAndCode(courseId, EncryptUtils.encode(chooseDTO.getCode()))) {
+        if (!courseDAO.existsByIdAndCode(courseId, chooseDTO.getCode())) {
             throw HelperException.of(ExceptionType.NOT_FOUND, "选课码错误");
         }
 
@@ -142,7 +140,7 @@ public class CourseServiceImpl implements CourseService {
             throw HelperException.of(ExceptionType.FORBIDDEN, "您无权获取该课程选课码");
         }
 
-        return EncryptUtils.decode(course.getCode());
+        return course.getCode();
     }
 
     @Transactional(readOnly = true)

+ 13 - 9
src/main/java/nju/seec/helper/util/EncryptUtils.java

@@ -1,25 +1,29 @@
 package nju.seec.helper.util;
 
+import lombok.SneakyThrows;
 import lombok.experimental.UtilityClass;
+import org.springframework.util.DigestUtils;
 
-import java.util.Base64;
+import java.security.MessageDigest;
 
 /**
  * @author cst
  */
 @UtilityClass
 public class EncryptUtils {
+    private static final String ALGORITHM = "SHA-256";
+
     /**
      * 加密
      */
+    @SneakyThrows
     public String encode(String string) {
-        return Base64.getEncoder().encodeToString(string.getBytes());
-    }
-
-    /**
-     * 解密
-     */
-    public String decode(String string) {
-        return new String(Base64.getDecoder().decode(string));
+        MessageDigest messageDigest = MessageDigest.getInstance(ALGORITHM);
+        messageDigest.update(string.getBytes());
+        StringBuilder builder = new StringBuilder();
+        for (byte b : messageDigest.digest()) {
+            builder.append(String.format("%02x", b));
+        }
+        return DigestUtils.md5DigestAsHex(builder.toString().getBytes());
     }
 }

+ 4 - 20
src/main/resources/update.sql

@@ -1,21 +1,5 @@
-drop index choose_student on choose;
+update user u
+set u.password = md5(sha2(from_base64(u.password), 256));
 
-alter table choose
-    drop constraint course_student_unique;
-
-alter table course add index course_teacher (teacher_id);
-
-alter table course
-    drop constraint course_name_unique;
-
-alter table quiz
-    add index quiz_slide (slide_id);
-
-alter table quiz
-    drop constraint quiz_name_unique;
-
-alter table slide
-    add index slide_course (course_id);
-
-alter table slide
-    drop constraint slide_name_unique;
+update course c
+set c.code = from_base64(c.code);