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 c09ac8d37..163187450 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 void setEncryptKey(String encryptKey) { 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 6b9fc4cad..7bd28718d 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.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 static String getEncryptKeyFromPath(String path) { 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 static String byteArrayToHexString(byte[] bytes) { 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 static EncryptParameter getEncryptParameter(TSFileConfig conf) { 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 static IEncrypt getEncrypt(TSFileConfig conf) { 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 afd4e9c3f..dc07bfc2e 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 EncryptParameter getEncryptParam(LongConsumer ioSizeRecorder) throws IOEx 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 53be3fec6..f21b97135 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 50d54df6e..dd7791971 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 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 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 6021e40fb..4a2e734cc 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 LazyLoadPageData(byte[] data, int offset, IUnCompressor unCompressor) { 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 a4f43fa45..5c71279ff 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 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 @@ protected TsFileWriter(TsFileIOWriter fileWriter, Schema schema, TSFileConfig co 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 c051a702d..feab67461 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 AlignedChunkGroupWriterImpl(IDeviceID deviceId) { 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 a82ca2310..49ec4d7f2 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 @@ protected AlignedChunkWriterImpl() {} // TestOnly public AlignedChunkWriterImpl(VectorMeasurementSchema schema) { - this.encryptParam = EncryptUtils.encryptParam; + this.encryptParam = EncryptUtils.getEncryptParameter(); timeChunkWriter = new TimeChunkWriter( schema.getMeasurementName(), @@ -127,7 +127,7 @@ public AlignedChunkWriterImpl(VectorMeasurementSchema schema, EncryptParameter e */ public AlignedChunkWriterImpl( IMeasurementSchema timeSchema, List valueSchemaList) { - this.encryptParam = EncryptUtils.encryptParam; + this.encryptParam = EncryptUtils.getEncryptParameter(); timeChunkWriter = new TimeChunkWriter( timeSchema.getMeasurementName(), @@ -189,7 +189,7 @@ public AlignedChunkWriterImpl( * @param schemaList value schema list */ public AlignedChunkWriterImpl(List 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 e96bee49a..25e0410b0 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 cc20b2520..261c14fae 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 7960a81a8..bbf2d0b87 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 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 f97d33709..d011e1258 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 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 877404304..d479ad8d4 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 PageWriter(IMeasurementSchema measurementSchema) { 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 @@ private PageWriter(Encoder timeEncoder, Encoder valueEncoder) { 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 b83743ef9..e09e66cdf 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 TimePageWriter(Encoder timeEncoder, ICompressor compressor) { 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 6199171a0..525c3199a 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 ValuePageWriter(Encoder valueEncoder, ICompressor compressor, TSDataType 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 c22787530..dd03471c2 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 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 @@ protected AbstractTableModelTsFileWriter(File file, long chunkGroupSizeThreshold 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 85bea9c98..e5d465f8b 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 @@ protected TsFileIOWriter() { 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 TsFileIOWriter(File file, TSFileConfig conf) throws IOException { 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 TsFileIOWriter(TsFileOutput output) throws IOException { 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";