From c69a9d571f7743d5ae96aa5ff57e4d723cc43c14 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sat, 5 Jun 2021 23:15:40 +0800 Subject: [PATCH] feat: v0.3.5, digest compares clear text file --- .../hatter/tools/tinyencrypt/TinyEncryptMain.java | 15 ++++++++++++++- .../tinyencrypt/config/TinyEncryptConstant.java | 2 +- .../tinyencrypt/encrypt/EncryptedFileUtil.java | 4 +++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/java/me/hatter/tools/tinyencrypt/TinyEncryptMain.java b/src/main/java/me/hatter/tools/tinyencrypt/TinyEncryptMain.java index 38fbc7e..2b734b2 100644 --- a/src/main/java/me/hatter/tools/tinyencrypt/TinyEncryptMain.java +++ b/src/main/java/me/hatter/tools/tinyencrypt/TinyEncryptMain.java @@ -7,6 +7,7 @@ import me.hatter.tools.commons.io.RFile; import me.hatter.tools.commons.log.LogConfig; import me.hatter.tools.commons.log.LogTool; import me.hatter.tools.commons.log.LogTools; +import me.hatter.tools.commons.security.digest.Digests; import me.hatter.tools.commons.security.key.KeyPairTool; import me.hatter.tools.commons.security.key.KeyUtil; import me.hatter.tools.commons.security.key.PKType; @@ -192,7 +193,19 @@ public class TinyEncryptMain { result = false; // do not delete file } else if (tinyEncryptArgs.digest) { Bytes sha256 = EncryptedFileUtil.decryptAndDigest(config, f); - log.info(sha256.asHex() + " - " + f); + if (sha256 != null) { + log.info(sha256.asHex() + " - " + f); + File clearTextFile = EncryptedFileUtil.getDecryptFile(f); + if ((clearTextFile != null) && clearTextFile.exists()) { + Bytes clearTextSha256 = RFile.from(clearTextFile).digest(Digests.sha256()); + if (clearTextSha256.equals(sha256)) { + log.info("Clear text file exists, and matches."); + } else { + String nfn = f.toString(); + log.warn(clearTextSha256.asHex() + " - " + nfn.substring(0, nfn.length() - TinyEncryptConstant.ENC_FILE_EXT.length())); + } + } + } 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 8f627fb..09d3da7 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.4"; + public static final String VERSION = "0.3.5"; 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 8e0ba1a..40644bc 100644 --- a/src/main/java/me/hatter/tools/tinyencrypt/encrypt/EncryptedFileUtil.java +++ b/src/main/java/me/hatter/tools/tinyencrypt/encrypt/EncryptedFileUtil.java @@ -54,7 +54,9 @@ public class EncryptedFileUtil { public static Bytes decryptAndDigest(TinyEncryptConfig config, File file) { DigestOutputStream outputStream = new DigestOutputStream(new NilOutputStream(), Digests.sha256()); - decryptToOutputStream(config, file, outputStream); + if (!decryptToOutputStream(config, file, outputStream)) { + return null; + } return outputStream.digest(); }