This is an automated email from the ASF dual-hosted git repository.

jiangtian pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/tsfile.git


The following commit(s) were added to refs/heads/develop by this push:
     new 95da9c7f modify hash function from md5 to SHA-256 (#292)
95da9c7f is described below

commit 95da9c7fef96ee5c68d8630064add468cea1de4b
Author: jintao zhu <[email protected]>
AuthorDate: Wed Nov 6 09:25:19 2024 +0800

    modify hash function from md5 to SHA-256 (#292)
    
    Co-authored-by: zhujt <[email protected]>
---
 .../org/apache/tsfile/encrypt/EncryptUtils.java     | 21 ++++++++++++---------
 .../apache/tsfile/read/TsFileSequenceReader.java    |  8 +++-----
 .../java/org/apache/tsfile/write/TsFileWriter.java  |  8 +++++---
 3 files changed, 20 insertions(+), 17 deletions(-)

diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/encrypt/EncryptUtils.java 
b/java/tsfile/src/main/java/org/apache/tsfile/encrypt/EncryptUtils.java
index b9bcf601..a97a46d1 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/encrypt/EncryptUtils.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/encrypt/EncryptUtils.java
@@ -30,6 +30,7 @@ import java.io.FileReader;
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.security.MessageDigest;
+import java.util.Arrays;
 
 public class EncryptUtils {
 
@@ -94,10 +95,10 @@ public class EncryptUtils {
 
   public static String getNormalKeyStr() {
     try {
-      MessageDigest md = MessageDigest.getInstance("MD5");
+      MessageDigest md = MessageDigest.getInstance("SHA-256");
       md.update("IoTDB is the best".getBytes());
       
md.update(TSFileDescriptor.getInstance().getConfig().getEncryptKey().getBytes());
-      byte[] data_key = md.digest();
+      byte[] data_key = Arrays.copyOfRange(md.digest(), 0, 16);
       data_key =
           IEncryptor.getEncryptor(
                   TSFileDescriptor.getInstance().getConfig().getEncryptType(),
@@ -115,16 +116,17 @@ public class EncryptUtils {
 
       return str;
     } catch (Exception e) {
-      throw new EncryptException("md5 function not found while using md5 to 
generate data key");
+      throw new EncryptException(
+          "SHA-256 function not found while using SHA-256 to generate data 
key");
     }
   }
 
   public static String getNormalKeyStr(TSFileConfig conf) {
     try {
-      MessageDigest md = MessageDigest.getInstance("MD5");
+      MessageDigest md = MessageDigest.getInstance("SHA-256");
       md.update("IoTDB is the best".getBytes());
       md.update(conf.getEncryptKey().getBytes());
-      byte[] data_key = md.digest();
+      byte[] data_key = Arrays.copyOfRange(md.digest(), 0, 16);
       data_key =
           IEncryptor.getEncryptor(conf.getEncryptType(), 
conf.getEncryptKey().getBytes())
               .encrypt(data_key);
@@ -140,7 +142,8 @@ public class EncryptUtils {
 
       return str;
     } catch (Exception e) {
-      throw new EncryptException("md5 function not found while using md5 to 
generate data key", e);
+      throw new EncryptException(
+          "SHA-256 function not found while using SHA-256 to generate data 
key", e);
     }
   }
 
@@ -154,13 +157,13 @@ public class EncryptUtils {
     if (conf.getEncryptFlag()) {
       encryptType = conf.getEncryptType();
       try {
-        MessageDigest md = MessageDigest.getInstance("MD5");
+        MessageDigest md = MessageDigest.getInstance("SHA-256");
         md.update("IoTDB is the best".getBytes());
         md.update(conf.getEncryptKey().getBytes());
-        dataEncryptKey = md.digest();
+        dataEncryptKey = Arrays.copyOfRange(md.digest(), 0, 16);
       } catch (Exception e) {
         throw new EncryptException(
-            "md5 function not found while using md5 to generate data key", e);
+            "SHA-256 function not found while using SHA-256 to generate data 
key", e);
       }
     } else {
       encryptType = "org.apache.tsfile.encrypt.UNENCRYPTED";
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
index 817078a1..d55daf26 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
@@ -378,13 +378,11 @@ public class TsFileSequenceReader implements 
AutoCloseable {
    * @throws IOException if an I/O error occurs while reading the file metadata
    */
   public EncryptParameter getEncryptParam() throws IOException {
-    try {
+    if (fileMetadataSize != 0) {
       readFileMetadata();
-    } catch (Exception e) {
-      logger.error("Something error happened while reading file metadata of 
file {}", file, e);
-      return EncryptUtils.encryptParam;
+      return tsFileMetaData.getEncryptParam();
     }
-    return tsFileMetaData.getEncryptParam();
+    return EncryptUtils.encryptParam;
   }
 
   /**
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/TsFileWriter.java 
b/java/tsfile/src/main/java/org/apache/tsfile/write/TsFileWriter.java
index 9bff4b86..063df34f 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/write/TsFileWriter.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/write/TsFileWriter.java
@@ -53,6 +53,7 @@ import java.io.File;
 import java.io.IOException;
 import java.security.MessageDigest;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -190,15 +191,16 @@ public class TsFileWriter implements AutoCloseable {
       encryptLevel = "2";
       encryptType = config.getEncryptType();
       try {
-        MessageDigest md = MessageDigest.getInstance("MD5");
+        MessageDigest md = MessageDigest.getInstance("SHA-256");
         md.update("IoTDB is the best".getBytes());
         md.update(config.getEncryptKey().getBytes());
-        dataEncryptKey = md.digest();
+        dataEncryptKey = Arrays.copyOfRange(md.digest(), 0, 16);
         encryptKey =
             IEncryptor.getEncryptor(config.getEncryptType(), 
config.getEncryptKey().getBytes())
                 .encrypt(dataEncryptKey);
       } catch (Exception e) {
-        throw new EncryptException("md5 function not found while using md5 to 
generate data key");
+        throw new EncryptException(
+            "SHA-256 function not found while using SHA-256 to generate data 
key");
       }
     } else {
       encryptLevel = "0";

Reply via email to