From ebf162e9bc729c5e42706a363860cbf6237b654d Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sat, 5 Jun 2021 23:01:31 +0800 Subject: [PATCH] feat: v0.3.4, add --digest --- .../tools/tinyencrypt/TinyEncryptArgs.java | 3 +++ .../tools/tinyencrypt/TinyEncryptMain.java | 5 +++++ .../config/TinyEncryptConstant.java | 2 +- .../tinyencrypt/encrypt/EncryptedFileUtil.java | 12 +++++++++++- .../{win => util}/MacDockerHelper.java | 2 +- .../tinyencrypt/util/NilOutputStream.java | 18 ++++++++++++++++++ .../tinyencrypt/{win => util}/SwingWindow.java | 2 +- .../{win => util}/WindowListenerImpl.java | 2 +- 8 files changed, 41 insertions(+), 5 deletions(-) rename src/main/java/me/hatter/tools/tinyencrypt/{win => util}/MacDockerHelper.java (97%) create mode 100644 src/main/java/me/hatter/tools/tinyencrypt/util/NilOutputStream.java rename src/main/java/me/hatter/tools/tinyencrypt/{win => util}/SwingWindow.java (98%) rename src/main/java/me/hatter/tools/tinyencrypt/{win => util}/WindowListenerImpl.java (93%) diff --git a/src/main/java/me/hatter/tools/tinyencrypt/TinyEncryptArgs.java b/src/main/java/me/hatter/tools/tinyencrypt/TinyEncryptArgs.java index ed2f449..fb83a16 100644 --- a/src/main/java/me/hatter/tools/tinyencrypt/TinyEncryptArgs.java +++ b/src/main/java/me/hatter/tools/tinyencrypt/TinyEncryptArgs.java @@ -13,6 +13,9 @@ public class TinyEncryptArgs { @CommandLine.Option(names = {"-d", "--decrypt"}, description = "Decrypt file") boolean decrypt = false; + @CommandLine.Option(names = {"--digest"}, description = "Calc source file digest(SHA256)") + boolean digest = false; + @CommandLine.Option(names = {"-s", "--show"}, description = "Show decrypted text in window") boolean showInWindow = false; diff --git a/src/main/java/me/hatter/tools/tinyencrypt/TinyEncryptMain.java b/src/main/java/me/hatter/tools/tinyencrypt/TinyEncryptMain.java index 60c5d53..38fbc7e 100644 --- a/src/main/java/me/hatter/tools/tinyencrypt/TinyEncryptMain.java +++ b/src/main/java/me/hatter/tools/tinyencrypt/TinyEncryptMain.java @@ -1,6 +1,7 @@ package me.hatter.tools.tinyencrypt; import com.alibaba.fastjson.JSON; +import me.hatter.tools.commons.bytes.Bytes; import me.hatter.tools.commons.exception.JumpOutException; import me.hatter.tools.commons.io.RFile; import me.hatter.tools.commons.log.LogConfig; @@ -189,6 +190,10 @@ public class TinyEncryptMain { if (tinyEncryptArgs.showInWindow) { EncryptedFileUtil.decryptInWindow(config, f); result = false; // do not delete file + } else if (tinyEncryptArgs.digest) { + Bytes sha256 = EncryptedFileUtil.decryptAndDigest(config, f); + log.info(sha256.asHex() + " - " + f); + result = false; // do not delete file } else { result = EncryptedFileUtil.decryptFile(config, f); } diff --git a/src/main/java/me/hatter/tools/tinyencrypt/config/TinyEncryptConstant.java b/src/main/java/me/hatter/tools/tinyencrypt/config/TinyEncryptConstant.java index d015aae..8f627fb 100644 --- a/src/main/java/me/hatter/tools/tinyencrypt/config/TinyEncryptConstant.java +++ b/src/main/java/me/hatter/tools/tinyencrypt/config/TinyEncryptConstant.java @@ -1,7 +1,7 @@ package me.hatter.tools.tinyencrypt.config; public class TinyEncryptConstant { - public static final String VERSION = "0.3.3"; + public static final String VERSION = "0.3.4"; public static final String ENC_FILE_EXT = ".tinyenc"; } diff --git a/src/main/java/me/hatter/tools/tinyencrypt/encrypt/EncryptedFileUtil.java b/src/main/java/me/hatter/tools/tinyencrypt/encrypt/EncryptedFileUtil.java index e01e5d1..8e0ba1a 100644 --- a/src/main/java/me/hatter/tools/tinyencrypt/encrypt/EncryptedFileUtil.java +++ b/src/main/java/me/hatter/tools/tinyencrypt/encrypt/EncryptedFileUtil.java @@ -1,17 +1,21 @@ package me.hatter.tools.tinyencrypt.encrypt; import me.hatter.tools.commons.assertion.AssertUtil; +import me.hatter.tools.commons.bytes.Bytes; import me.hatter.tools.commons.io.DefaultRollCounter; +import me.hatter.tools.commons.io.DigestOutputStream; import me.hatter.tools.commons.io.IOUtil; import me.hatter.tools.commons.log.LogTool; import me.hatter.tools.commons.log.LogTools; import me.hatter.tools.commons.security.crypt.CryptInputStream; import me.hatter.tools.commons.security.crypt.CryptOutputStream; +import me.hatter.tools.commons.security.digest.Digests; import me.hatter.tools.commons.tlv.Tlv; import me.hatter.tools.commons.tlv.TlvUtil; import me.hatter.tools.tinyencrypt.config.TinyEncryptConfig; import me.hatter.tools.tinyencrypt.config.TinyEncryptConstant; -import me.hatter.tools.tinyencrypt.win.SwingWindow; +import me.hatter.tools.tinyencrypt.util.NilOutputStream; +import me.hatter.tools.tinyencrypt.util.SwingWindow; import java.io.*; import java.nio.charset.StandardCharsets; @@ -48,6 +52,12 @@ public class EncryptedFileUtil { } } + public static Bytes decryptAndDigest(TinyEncryptConfig config, File file) { + DigestOutputStream outputStream = new DigestOutputStream(new NilOutputStream(), Digests.sha256()); + decryptToOutputStream(config, file, outputStream); + return outputStream.digest(); + } + public static void decryptInWindow(TinyEncryptConfig config, File file) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); decryptToOutputStream(config, file, baos); diff --git a/src/main/java/me/hatter/tools/tinyencrypt/win/MacDockerHelper.java b/src/main/java/me/hatter/tools/tinyencrypt/util/MacDockerHelper.java similarity index 97% rename from src/main/java/me/hatter/tools/tinyencrypt/win/MacDockerHelper.java rename to src/main/java/me/hatter/tools/tinyencrypt/util/MacDockerHelper.java index d9cfd59..6cecf62 100644 --- a/src/main/java/me/hatter/tools/tinyencrypt/win/MacDockerHelper.java +++ b/src/main/java/me/hatter/tools/tinyencrypt/util/MacDockerHelper.java @@ -1,4 +1,4 @@ -package me.hatter.tools.tinyencrypt.win; +package me.hatter.tools.tinyencrypt.util; import me.hatter.tools.commons.classloader.ClassLoaderUtil; import me.hatter.tools.commons.io.RResource; diff --git a/src/main/java/me/hatter/tools/tinyencrypt/util/NilOutputStream.java b/src/main/java/me/hatter/tools/tinyencrypt/util/NilOutputStream.java new file mode 100644 index 0000000..c768d59 --- /dev/null +++ b/src/main/java/me/hatter/tools/tinyencrypt/util/NilOutputStream.java @@ -0,0 +1,18 @@ +package me.hatter.tools.tinyencrypt.util; + +import java.io.IOException; +import java.io.OutputStream; + +public class NilOutputStream extends OutputStream { + @Override + public void write(int b) throws IOException { + } + + @Override + public void write(byte b[]) throws IOException { + } + + @Override + public void write(byte b[], int off, int len) throws IOException { + } +} diff --git a/src/main/java/me/hatter/tools/tinyencrypt/win/SwingWindow.java b/src/main/java/me/hatter/tools/tinyencrypt/util/SwingWindow.java similarity index 98% rename from src/main/java/me/hatter/tools/tinyencrypt/win/SwingWindow.java rename to src/main/java/me/hatter/tools/tinyencrypt/util/SwingWindow.java index 9a8b250..a562416 100644 --- a/src/main/java/me/hatter/tools/tinyencrypt/win/SwingWindow.java +++ b/src/main/java/me/hatter/tools/tinyencrypt/util/SwingWindow.java @@ -1,4 +1,4 @@ -package me.hatter.tools.tinyencrypt.win; +package me.hatter.tools.tinyencrypt.util; import me.hatter.tools.commons.string.StringUtil; diff --git a/src/main/java/me/hatter/tools/tinyencrypt/win/WindowListenerImpl.java b/src/main/java/me/hatter/tools/tinyencrypt/util/WindowListenerImpl.java similarity index 93% rename from src/main/java/me/hatter/tools/tinyencrypt/win/WindowListenerImpl.java rename to src/main/java/me/hatter/tools/tinyencrypt/util/WindowListenerImpl.java index 86591f8..127c0b2 100644 --- a/src/main/java/me/hatter/tools/tinyencrypt/win/WindowListenerImpl.java +++ b/src/main/java/me/hatter/tools/tinyencrypt/util/WindowListenerImpl.java @@ -1,4 +1,4 @@ -package me.hatter.tools.tinyencrypt.win; +package me.hatter.tools.tinyencrypt.util; import java.awt.event.WindowEvent; import java.awt.event.WindowListener;