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 37dcffbc add getter for encryptParam (#447)
37dcffbc is described below

commit 37dcffbc8d955f4de5add61c82f995541fd48a78
Author: jintao zhu <[email protected]>
AuthorDate: Tue Mar 25 10:00:58 2025 +0800

    add getter for encryptParam (#447)
    
    * add getter for encryptParam
    
    * reduce duplicate codes
---
 .../apache/tsfile/common/conf/TSFileConfig.java    |   2 -
 .../org/apache/tsfile/encrypt/EncryptUtils.java    | 120 ++++++++++-----------
 .../apache/tsfile/read/TsFileSequenceReader.java   |   2 +-
 .../apache/tsfile/read/UnClosedTsFileReader.java   |   2 +-
 .../java/org/apache/tsfile/read/common/Chunk.java  |   4 +-
 .../tsfile/read/reader/page/LazyLoadPageData.java  |   2 +-
 .../java/org/apache/tsfile/write/TsFileWriter.java |  20 ++--
 .../write/chunk/AlignedChunkGroupWriterImpl.java   |   2 +-
 .../tsfile/write/chunk/AlignedChunkWriterImpl.java |   6 +-
 .../apache/tsfile/write/chunk/ChunkWriterImpl.java |   2 +-
 .../chunk/NonAlignedChunkGroupWriterImpl.java      |   2 +-
 .../apache/tsfile/write/chunk/TimeChunkWriter.java |   2 +-
 .../tsfile/write/chunk/ValueChunkWriter.java       |   2 +-
 .../org/apache/tsfile/write/page/PageWriter.java   |   4 +-
 .../apache/tsfile/write/page/TimePageWriter.java   |   2 +-
 .../apache/tsfile/write/page/ValuePageWriter.java  |   2 +-
 .../write/v4/AbstractTableModelTsFileWriter.java   |  21 ++--
 .../apache/tsfile/write/writer/TsFileIOWriter.java |   6 +-
 18 files changed, 101 insertions(+), 102 deletions(-)

diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/common/conf/TSFileConfig.java 
b/java/tsfile/src/main/java/org/apache/tsfile/common/conf/TSFileConfig.java
index c09ac8d3..16318745 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/common/conf/TSFileConfig.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/common/conf/TSFileConfig.java
@@ -269,8 +269,6 @@ public class TSFileConfig implements Serializable {
 
   public void setEncryptKeyFromPath(String encryptKeyPath) {
     this.encryptKey = EncryptUtils.getEncryptKeyFromPath(encryptKeyPath);
-    EncryptUtils.encryptParam = EncryptUtils.getEncryptParameter();
-    EncryptUtils.normalKeyStr = EncryptUtils.getNormalKeyStr();
   }
 
   public int getGroupSizeInByte() {
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 6b9fc4ca..7bd28718 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.security.NoSuchAlgorithmException;
 import java.util.Arrays;
 
 public class EncryptUtils {
@@ -40,9 +41,20 @@ public class EncryptUtils {
 
   private static final String encryptClassPrefix = 
"org.apache.tsfile.encrypt.";
 
-  public static String normalKeyStr = getNormalKeyStr();
+  private static volatile String normalKeyStr;
 
-  public static EncryptParameter encryptParam = getEncryptParameter();
+  private static volatile EncryptParameter encryptParam;
+
+  public static String getNormalKeyStr() {
+    if (normalKeyStr == null) {
+      synchronized (EncryptUtils.class) {
+        if (normalKeyStr == null) {
+          normalKeyStr = 
getNormalKeyStr(TSFileDescriptor.getInstance().getConfig());
+        }
+      }
+    }
+    return normalKeyStr;
+  }
 
   public static String getEncryptClass(String encryptType) {
     String classNameRegex = "^(\\p{Alpha}\\w*)(\\.\\p{Alpha}\\w+)+$";
@@ -76,7 +88,11 @@ public class EncryptUtils {
           sb.append("\n").append(line);
         }
       }
-      return sb.toString();
+      String str = sb.toString();
+      if (str.isEmpty()) {
+        return defaultKey;
+      }
+      return str;
     } catch (IOException e) {
       throw new EncryptException("Read main encrypt key error", e);
     }
@@ -106,62 +122,40 @@ public class EncryptUtils {
     return sb.toString();
   }
 
-  public static String getNormalKeyStr() {
+  public static String getNormalKeyStr(TSFileConfig conf) {
+    final MessageDigest md;
     try {
-      MessageDigest md = MessageDigest.getInstance("SHA-256");
-      md.update("IoTDB is the best".getBytes());
-      
md.update(TSFileDescriptor.getInstance().getConfig().getEncryptKey().getBytes());
-      byte[] data_key = Arrays.copyOfRange(md.digest(), 0, 16);
-      data_key =
-          IEncryptor.getEncryptor(
-                  TSFileDescriptor.getInstance().getConfig().getEncryptType(),
-                  
TSFileDescriptor.getInstance().getConfig().getEncryptKey().getBytes())
-              .encrypt(data_key);
-
-      StringBuilder valueStr = new StringBuilder();
-
-      for (byte b : data_key) {
-        valueStr.append(b).append(",");
-      }
-
-      valueStr.deleteCharAt(valueStr.length() - 1);
-      String str = valueStr.toString();
-
-      return str;
-    } catch (Exception e) {
+      md = MessageDigest.getInstance("SHA-256");
+    } catch (NoSuchAlgorithmException e) {
       throw new EncryptException(
-          "SHA-256 function not found while using SHA-256 to generate data 
key", e);
+          "SHA-256 algorithm not found while using SHA-256 to generate data 
key", e);
     }
-  }
-
-  public static String getNormalKeyStr(TSFileConfig conf) {
-    try {
-      MessageDigest md = MessageDigest.getInstance("SHA-256");
-      md.update("IoTDB is the best".getBytes());
-      md.update(conf.getEncryptKey().getBytes());
-      byte[] data_key = Arrays.copyOfRange(md.digest(), 0, 16);
-      data_key =
-          IEncryptor.getEncryptor(conf.getEncryptType(), 
conf.getEncryptKey().getBytes())
-              .encrypt(data_key);
+    md.update("IoTDB is the best".getBytes());
+    md.update(conf.getEncryptKey().getBytes());
+    byte[] data_key = Arrays.copyOfRange(md.digest(), 0, 16);
+    data_key =
+        IEncryptor.getEncryptor(conf.getEncryptType(), 
conf.getEncryptKey().getBytes())
+            .encrypt(data_key);
 
-      StringBuilder valueStr = new StringBuilder();
+    StringBuilder valueStr = new StringBuilder();
 
-      for (byte b : data_key) {
-        valueStr.append(b).append(",");
-      }
-
-      valueStr.deleteCharAt(valueStr.length() - 1);
-      String str = valueStr.toString();
-
-      return str;
-    } catch (Exception e) {
-      throw new EncryptException(
-          "SHA-256 function not found while using SHA-256 to generate data 
key", e);
+    for (byte b : data_key) {
+      valueStr.append(b).append(",");
     }
+
+    valueStr.deleteCharAt(valueStr.length() - 1);
+    return valueStr.toString();
   }
 
   public static EncryptParameter getEncryptParameter() {
-    return getEncryptParameter(TSFileDescriptor.getInstance().getConfig());
+    if (encryptParam == null) {
+      synchronized (EncryptUtils.class) {
+        if (encryptParam == null) {
+          encryptParam = 
getEncryptParameter(TSFileDescriptor.getInstance().getConfig());
+        }
+      }
+    }
+    return encryptParam;
   }
 
   public static EncryptParameter getEncryptParameter(TSFileConfig conf) {
@@ -169,15 +163,16 @@ public class EncryptUtils {
     byte[] dataEncryptKey;
     if (conf.getEncryptFlag()) {
       encryptType = conf.getEncryptType();
+      final MessageDigest md;
       try {
-        MessageDigest md = MessageDigest.getInstance("SHA-256");
-        md.update("IoTDB is the best".getBytes());
-        md.update(conf.getEncryptKey().getBytes());
-        dataEncryptKey = Arrays.copyOfRange(md.digest(), 0, 16);
-      } catch (Exception e) {
+        md = MessageDigest.getInstance("SHA-256");
+      } catch (NoSuchAlgorithmException e) {
         throw new EncryptException(
-            "SHA-256 function not found while using SHA-256 to generate data 
key", e);
+            "SHA-256 algorithm not found while using SHA-256 to generate data 
key", e);
       }
+      md.update("IoTDB is the best".getBytes());
+      md.update(conf.getEncryptKey().getBytes());
+      dataEncryptKey = Arrays.copyOfRange(md.digest(), 0, 16);
     } else {
       encryptType = "org.apache.tsfile.encrypt.UNENCRYPTED";
       dataEncryptKey = null;
@@ -214,15 +209,16 @@ public class EncryptUtils {
     byte[] dataEncryptKey;
     if (conf.getEncryptFlag()) {
       encryptType = conf.getEncryptType();
+      final MessageDigest md;
       try {
-        MessageDigest md = MessageDigest.getInstance("SHA-256");
-        md.update("IoTDB is the best".getBytes());
-        md.update(conf.getEncryptKey().getBytes());
-        dataEncryptKey = Arrays.copyOfRange(md.digest(), 0, 16);
-      } catch (Exception e) {
+        md = MessageDigest.getInstance("SHA-256");
+      } catch (NoSuchAlgorithmException e) {
         throw new EncryptException(
-            "SHA-256 function not found while using SHA-256 to generate data 
key", e);
+            "SHA-256 algorithm not found while using SHA-256 to generate data 
key", e);
       }
+      md.update("IoTDB is the best".getBytes());
+      md.update(conf.getEncryptKey().getBytes());
+      dataEncryptKey = Arrays.copyOfRange(md.digest(), 0, 16);
     } else {
       encryptType = "org.apache.tsfile.encrypt.UNENCRYPTED";
       dataEncryptKey = null;
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 afd4e9c3..dc07bfc2 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
@@ -479,7 +479,7 @@ public class TsFileSequenceReader implements AutoCloseable {
       readFileMetadata(ioSizeRecorder);
       return tsFileMetaData.getEncryptParam();
     }
-    return EncryptUtils.encryptParam;
+    return EncryptUtils.getEncryptParameter();
   }
 
   /**
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/UnClosedTsFileReader.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/UnClosedTsFileReader.java
index 53be3fec..f21b9713 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/UnClosedTsFileReader.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/UnClosedTsFileReader.java
@@ -35,7 +35,7 @@ public class UnClosedTsFileReader extends 
TsFileSequenceReader {
   // ioSizeRecorder can be null
   public UnClosedTsFileReader(String file, LongConsumer ioSizeRecorder) throws 
IOException {
     super(file, false, ioSizeRecorder);
-    encryptParam = EncryptUtils.encryptParam;
+    encryptParam = EncryptUtils.getEncryptParameter();
   }
 
   // ioSizeRecorder can be null
diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/common/Chunk.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/Chunk.java
index 50d54df6..dd779197 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/Chunk.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/Chunk.java
@@ -74,7 +74,7 @@ public class Chunk {
     this.chunkData = buffer;
     this.deleteIntervalList = deleteIntervalList;
     this.chunkStatistic = chunkStatistic;
-    this.encryptParam = EncryptUtils.encryptParam;
+    this.encryptParam = EncryptUtils.getEncryptParameter();
   }
 
   public Chunk(
@@ -93,7 +93,7 @@ public class Chunk {
   public Chunk(ChunkHeader header, ByteBuffer buffer) {
     this.chunkHeader = header;
     this.chunkData = buffer;
-    this.encryptParam = EncryptUtils.encryptParam;
+    this.encryptParam = EncryptUtils.getEncryptParameter();
   }
 
   public Chunk(ChunkHeader header, ByteBuffer buffer, EncryptParameter 
encryptParam) {
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/LazyLoadPageData.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/LazyLoadPageData.java
index 6021e40f..4a2e734c 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/LazyLoadPageData.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/LazyLoadPageData.java
@@ -42,7 +42,7 @@ public class LazyLoadPageData {
     this.chunkData = data;
     this.pageDataOffset = offset;
     this.unCompressor = unCompressor;
-    this.encryptParam = EncryptUtils.encryptParam;
+    this.encryptParam = EncryptUtils.getEncryptParameter();
   }
 
   public LazyLoadPageData(
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 a4f43fa4..5c71279f 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
@@ -54,6 +54,7 @@ import org.slf4j.LoggerFactory;
 import java.io.File;
 import java.io.IOException;
 import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -193,18 +194,19 @@ public class TsFileWriter implements AutoCloseable {
     if (config.getEncryptFlag()) {
       encryptLevel = "2";
       encryptType = config.getEncryptType();
+      final MessageDigest md;
       try {
-        MessageDigest md = MessageDigest.getInstance("SHA-256");
-        md.update("IoTDB is the best".getBytes());
-        md.update(config.getEncryptKey().getBytes());
-        dataEncryptKey = Arrays.copyOfRange(md.digest(), 0, 16);
-        encryptKey =
-            IEncryptor.getEncryptor(config.getEncryptType(), 
config.getEncryptKey().getBytes())
-                .encrypt(dataEncryptKey);
-      } catch (Exception e) {
+        md = MessageDigest.getInstance("SHA-256");
+      } catch (NoSuchAlgorithmException e) {
         throw new EncryptException(
-            "SHA-256 function not found while using SHA-256 to generate data 
key", e);
+            "SHA-256 algorithm not found while using SHA-256 to generate data 
key", e);
       }
+      md.update("IoTDB is the best".getBytes());
+      md.update(config.getEncryptKey().getBytes());
+      dataEncryptKey = Arrays.copyOfRange(md.digest(), 0, 16);
+      encryptKey =
+          IEncryptor.getEncryptor(config.getEncryptType(), 
config.getEncryptKey().getBytes())
+              .encrypt(dataEncryptKey);
     } else {
       encryptLevel = "0";
       encryptType = "org.apache.tsfile.encrypt.UNENCRYPTED";
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java
index c051a702..feab6746 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java
@@ -74,7 +74,7 @@ public class AlignedChunkGroupWriterImpl implements 
IChunkGroupWriter {
         
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
     TSDataType timeType = 
TSFileDescriptor.getInstance().getConfig().getTimeSeriesDataType();
     Encoder encoder = 
TSEncodingBuilder.getEncodingBuilder(tsEncoding).getEncoder(timeType);
-    this.encryprParam = EncryptUtils.encryptParam;
+    this.encryprParam = EncryptUtils.getEncryptParameter();
     timeChunkWriter =
         new TimeChunkWriter(
             timeMeasurementId, compressionType, tsEncoding, encoder, 
this.encryprParam);
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkWriterImpl.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkWriterImpl.java
index a82ca231..49ec4d7f 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkWriterImpl.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkWriterImpl.java
@@ -57,7 +57,7 @@ public class AlignedChunkWriterImpl implements IChunkWriter {
 
   // TestOnly
   public AlignedChunkWriterImpl(VectorMeasurementSchema schema) {
-    this.encryptParam = EncryptUtils.encryptParam;
+    this.encryptParam = EncryptUtils.getEncryptParameter();
     timeChunkWriter =
         new TimeChunkWriter(
             schema.getMeasurementName(),
@@ -127,7 +127,7 @@ public class AlignedChunkWriterImpl implements IChunkWriter 
{
    */
   public AlignedChunkWriterImpl(
       IMeasurementSchema timeSchema, List<IMeasurementSchema> valueSchemaList) 
{
-    this.encryptParam = EncryptUtils.encryptParam;
+    this.encryptParam = EncryptUtils.getEncryptParameter();
     timeChunkWriter =
         new TimeChunkWriter(
             timeSchema.getMeasurementName(),
@@ -189,7 +189,7 @@ public class AlignedChunkWriterImpl implements IChunkWriter 
{
    * @param schemaList value schema list
    */
   public AlignedChunkWriterImpl(List<IMeasurementSchema> schemaList) {
-    this.encryptParam = EncryptUtils.encryptParam;
+    this.encryptParam = EncryptUtils.getEncryptParameter();
     TSEncoding timeEncoding =
         
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
     TSDataType timeType = 
TSFileDescriptor.getInstance().getConfig().getTimeSeriesDataType();
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ChunkWriterImpl.java 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ChunkWriterImpl.java
index e96bee49..25e0410b 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ChunkWriterImpl.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ChunkWriterImpl.java
@@ -103,7 +103,7 @@ public class ChunkWriterImpl implements IChunkWriter {
   public ChunkWriterImpl(IMeasurementSchema schema) {
     this.measurementSchema = schema;
     this.compressor = ICompressor.getCompressor(schema.getCompressor());
-    this.encryptParam = EncryptUtils.encryptParam;
+    this.encryptParam = EncryptUtils.getEncryptParameter();
     this.pageBuffer = new PublicBAOS();
 
     this.pageSizeThreshold = 
TSFileDescriptor.getInstance().getConfig().getPageSizeInByte();
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
index cc20b252..261c14fa 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
@@ -60,7 +60,7 @@ public class NonAlignedChunkGroupWriterImpl implements 
IChunkGroupWriter {
 
   public NonAlignedChunkGroupWriterImpl(IDeviceID deviceId) {
     this.deviceId = deviceId;
-    this.encryptParam = EncryptUtils.encryptParam;
+    this.encryptParam = EncryptUtils.getEncryptParameter();
   }
 
   public NonAlignedChunkGroupWriterImpl(IDeviceID deviceId, EncryptParameter 
encryptParam) {
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/TimeChunkWriter.java 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/TimeChunkWriter.java
index 7960a81a..bbf2d0b8 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/TimeChunkWriter.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/TimeChunkWriter.java
@@ -94,7 +94,7 @@ public class TimeChunkWriter {
     this.measurementId = measurementId;
     this.encodingType = encodingType;
     this.compressionType = compressionType;
-    this.encryptParam = EncryptUtils.encryptParam;
+    this.encryptParam = EncryptUtils.getEncryptParameter();
     this.pageBuffer = new PublicBAOS();
 
     this.pageSizeThreshold = 
TSFileDescriptor.getInstance().getConfig().getPageSizeInByte();
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ValueChunkWriter.java 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ValueChunkWriter.java
index f97d3370..d011e125 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ValueChunkWriter.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ValueChunkWriter.java
@@ -97,7 +97,7 @@ public class ValueChunkWriter {
     this.encodingType = encodingType;
     this.dataType = dataType;
     this.compressionType = compressionType;
-    this.encryptParam = EncryptUtils.encryptParam;
+    this.encryptParam = EncryptUtils.getEncryptParameter();
     this.pageBuffer = new PublicBAOS();
     this.pageSizeThreshold = 
TSFileDescriptor.getInstance().getConfig().getPageSizeInByte();
     this.maxNumberOfPointsInPage =
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/page/PageWriter.java 
b/java/tsfile/src/main/java/org/apache/tsfile/write/page/PageWriter.java
index 87740430..d479ad8d 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/write/page/PageWriter.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/write/page/PageWriter.java
@@ -74,7 +74,7 @@ public class PageWriter {
     this(measurementSchema.getTimeEncoder(), 
measurementSchema.getValueEncoder());
     this.statistics = Statistics.getStatsByType(measurementSchema.getType());
     this.compressor = 
ICompressor.getCompressor(measurementSchema.getCompressor());
-    this.encryptParam = EncryptUtils.encryptParam;
+    this.encryptParam = EncryptUtils.getEncryptParameter();
   }
 
   private PageWriter(Encoder timeEncoder, Encoder valueEncoder) {
@@ -82,7 +82,7 @@ public class PageWriter {
     this.valueOut = new PublicBAOS();
     this.timeEncoder = timeEncoder;
     this.valueEncoder = valueEncoder;
-    this.encryptParam = EncryptUtils.encryptParam;
+    this.encryptParam = EncryptUtils.getEncryptParameter();
   }
 
   public PageWriter(EncryptParameter encryptParam) {
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/page/TimePageWriter.java 
b/java/tsfile/src/main/java/org/apache/tsfile/write/page/TimePageWriter.java
index b83743ef..e09e66cd 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/write/page/TimePageWriter.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/write/page/TimePageWriter.java
@@ -64,7 +64,7 @@ public class TimePageWriter {
     this.timeEncoder = timeEncoder;
     this.statistics = new TimeStatistics();
     this.compressor = compressor;
-    this.encryptParam = EncryptUtils.encryptParam;
+    this.encryptParam = EncryptUtils.getEncryptParameter();
   }
 
   public TimePageWriter(
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/page/ValuePageWriter.java 
b/java/tsfile/src/main/java/org/apache/tsfile/write/page/ValuePageWriter.java
index 6199171a..525c3199 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/page/ValuePageWriter.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/page/ValuePageWriter.java
@@ -77,7 +77,7 @@ public class ValuePageWriter {
     this.valueEncoder = valueEncoder;
     this.statistics = Statistics.getStatsByType(dataType);
     this.compressor = compressor;
-    this.encryptParam = EncryptUtils.encryptParam;
+    this.encryptParam = EncryptUtils.getEncryptParameter();
   }
 
   public ValuePageWriter(
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/v4/AbstractTableModelTsFileWriter.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/write/v4/AbstractTableModelTsFileWriter.java
index c2278753..dd03471c 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/v4/AbstractTableModelTsFileWriter.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/v4/AbstractTableModelTsFileWriter.java
@@ -39,6 +39,7 @@ import org.slf4j.LoggerFactory;
 import java.io.File;
 import java.io.IOException;
 import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -105,18 +106,20 @@ abstract class AbstractTableModelTsFileWriter implements 
ITsFileWriter {
     if (config.getEncryptFlag()) {
       encryptLevel = "2";
       encryptType = config.getEncryptType();
+
+      final MessageDigest md;
       try {
-        MessageDigest md = MessageDigest.getInstance("SHA-256");
-        md.update("IoTDB is the best".getBytes());
-        md.update(config.getEncryptKey().getBytes());
-        dataEncryptKey = Arrays.copyOfRange(md.digest(), 0, 16);
-        encryptKey =
-            IEncryptor.getEncryptor(config.getEncryptType(), 
config.getEncryptKey().getBytes())
-                .encrypt(dataEncryptKey);
-      } catch (Exception e) {
+        md = MessageDigest.getInstance("SHA-256");
+      } catch (NoSuchAlgorithmException e) {
         throw new EncryptException(
-            "SHA-256 function not found while using SHA-256 to generate data 
key");
+            "SHA-256 algorithm not found while using SHA-256 to generate data 
key", e);
       }
+      md.update("IoTDB is the best".getBytes());
+      md.update(config.getEncryptKey().getBytes());
+      dataEncryptKey = Arrays.copyOfRange(md.digest(), 0, 16);
+      encryptKey =
+          IEncryptor.getEncryptor(config.getEncryptType(), 
config.getEncryptKey().getBytes())
+              .encrypt(dataEncryptKey);
     } else {
       encryptLevel = "0";
       encryptType = "org.apache.tsfile.encrypt.UNENCRYPTED";
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/writer/TsFileIOWriter.java 
b/java/tsfile/src/main/java/org/apache/tsfile/write/writer/TsFileIOWriter.java
index 85bea9c9..e5d465f8 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/writer/TsFileIOWriter.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/writer/TsFileIOWriter.java
@@ -138,7 +138,7 @@ public class TsFileIOWriter implements AutoCloseable {
     if (TS_FILE_CONFIG.getEncryptFlag()) {
       this.encryptLevel = "2";
       this.encryptType = TS_FILE_CONFIG.getEncryptType();
-      this.encryptKey = EncryptUtils.normalKeyStr;
+      this.encryptKey = EncryptUtils.getNormalKeyStr();
     } else {
       this.encryptLevel = "0";
       this.encryptType = "org.apache.tsfile.encrypt.UNENCRYPTED";
@@ -166,7 +166,7 @@ public class TsFileIOWriter implements AutoCloseable {
     if (conf.getEncryptFlag()) {
       this.encryptLevel = "2";
       this.encryptType = conf.getEncryptType();
-      this.encryptKey = EncryptUtils.normalKeyStr;
+      this.encryptKey = EncryptUtils.getNormalKeyStr();
     } else {
       this.encryptLevel = "0";
       this.encryptType = "org.apache.tsfile.encrypt.UNENCRYPTED";
@@ -185,7 +185,7 @@ public class TsFileIOWriter implements AutoCloseable {
     if (TS_FILE_CONFIG.getEncryptFlag()) {
       this.encryptLevel = "2";
       this.encryptType = TS_FILE_CONFIG.getEncryptType();
-      this.encryptKey = EncryptUtils.normalKeyStr;
+      this.encryptKey = EncryptUtils.getNormalKeyStr();
     } else {
       this.encryptLevel = "0";
       this.encryptType = "org.apache.tsfile.encrypt.UNENCRYPTED";

Reply via email to