Jelajahi Sumber

用 sm3 替换 md5

Shinohara Haruna 6 bulan lalu
induk
melakukan
14445682ff

+ 19 - 0
smsb-common/smsb-common-encrypt/src/main/java/org/dromara/common/encrypt/utils/EncryptUtils.java

@@ -9,6 +9,8 @@ import cn.hutool.crypto.asymmetric.KeyType;
 import cn.hutool.crypto.asymmetric.RSA;
 import cn.hutool.crypto.asymmetric.SM2;
 
+import java.io.File;
+import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;
@@ -28,6 +30,23 @@ public class EncryptUtils {
      */
     public static final String PRIVATE_KEY = "privateKey";
 
+    /**
+     * sm3摘要,主要用来替换md5
+     * @param data 待摘要数据
+     * @return 摘要结果
+     */
+    public static String digest_sm3(String data) {
+        return SmUtil.sm3(data);
+    }
+
+    public static String digest_sm3(InputStream inputStream) {
+        return SmUtil.sm3(inputStream);
+    }
+
+    public static String digest_sm3(File file) {
+        return SmUtil.sm3(file);
+    }
+
     /**
      * Base64加密
      *

+ 5 - 2
smsb-modules/smsb-source/src/main/java/com/inspur/source/service/impl/SmsbMinioDataServiceImpl.java

@@ -17,6 +17,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.encrypt.utils.EncryptUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.oss.core.OssClient;
@@ -547,7 +548,6 @@ public class SmsbMinioDataServiceImpl implements ISmsbMinioDataService {
                 return new SmsbFileUploadMsgVo(Boolean.FALSE, "Invalid parameters", null);
             }
 
-
             // Save chunk
             Path chunkDir = Paths.get(tempDir, uploadId);
             Files.createDirectories(chunkDir);
@@ -825,7 +825,10 @@ public class SmsbMinioDataServiceImpl implements ISmsbMinioDataService {
     @Override
     public SysOssVo uploadSmsb(MultipartFile file) {
         // 计算文件的MD5
-        String md5 = getFileMD5(file);
+        File tempFile = convertMultipartFileToFile(file);
+        // String md5 = getFileMD5(file);
+        // 用 Sm3 替换 MD5
+        String md5 = EncryptUtils.digest_sm3(tempFile);
         // 根据Md5查询当前租户下是否存在相同文件
         SysOssVo sysOss = sysOssMapper.selectVoOne(new LambdaQueryWrapper<SysOss>().eq(SysOss::getFileMd5, md5));
         if (sysOss != null) {