From e236c29ef363237a876b2892747c3f1958648992 Mon Sep 17 00:00:00 2001 From: Rostislav Raykov Date: Tue, 29 Oct 2024 21:13:47 +0200 Subject: [PATCH] made the utility classes instantiable --- .../quickdrop/util/DataValidator.java | 4 ++++ .../quickdrop/util/FileEncryptionUtils.java | 18 ++++++++---------- .../rostislav/quickdrop/util/FileUtils.java | 11 +++++++++++ 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/rostislav/quickdrop/util/DataValidator.java b/src/main/java/org/rostislav/quickdrop/util/DataValidator.java index 0e282cb..4a69eba 100644 --- a/src/main/java/org/rostislav/quickdrop/util/DataValidator.java +++ b/src/main/java/org/rostislav/quickdrop/util/DataValidator.java @@ -1,6 +1,10 @@ package org.rostislav.quickdrop.util; public class DataValidator { + private DataValidator() { + // To prevent instantiation + } + public static boolean validateObjects(Object... objs) { for (Object temp : objs) { if (temp != null) { diff --git a/src/main/java/org/rostislav/quickdrop/util/FileEncryptionUtils.java b/src/main/java/org/rostislav/quickdrop/util/FileEncryptionUtils.java index c50c683..bca4d7a 100644 --- a/src/main/java/org/rostislav/quickdrop/util/FileEncryptionUtils.java +++ b/src/main/java/org/rostislav/quickdrop/util/FileEncryptionUtils.java @@ -1,5 +1,9 @@ package org.rostislav.quickdrop.util; +import javax.crypto.*; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.PBEKeySpec; +import javax.crypto.spec.SecretKeySpec; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -10,21 +14,15 @@ import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.spec.InvalidKeySpecException; -import javax.crypto.BadPaddingException; -import javax.crypto.Cipher; -import javax.crypto.IllegalBlockSizeException; -import javax.crypto.NoSuchPaddingException; -import javax.crypto.SecretKey; -import javax.crypto.SecretKeyFactory; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.PBEKeySpec; -import javax.crypto.spec.SecretKeySpec; - public class FileEncryptionUtils { private static final String ALGORITHM = "AES/CBC/PKCS5Padding"; private static final int ITERATION_COUNT = 65536; private static final int KEY_LENGTH = 128; + private FileEncryptionUtils() { + // To prevent instantiation + } + public static SecretKey generateKeyFromPassword(String password, byte[] salt) throws NoSuchAlgorithmException, InvalidKeySpecException { PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, ITERATION_COUNT, KEY_LENGTH); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); diff --git a/src/main/java/org/rostislav/quickdrop/util/FileUtils.java b/src/main/java/org/rostislav/quickdrop/util/FileUtils.java index 986e5d9..8ae86bc 100644 --- a/src/main/java/org/rostislav/quickdrop/util/FileUtils.java +++ b/src/main/java/org/rostislav/quickdrop/util/FileUtils.java @@ -5,6 +5,9 @@ import org.rostislav.quickdrop.model.FileEntity; import org.springframework.ui.Model; public class FileUtils { + private FileUtils() { + // To prevent instantiation + } public static String formatFileSize(long size) { String[] units = {"B", "KB", "MB", "GB", "TB"}; @@ -17,6 +20,14 @@ public class FileUtils { return String.format("%.2f %s", sizeInUnits, units[unitIndex]); } + public static long bytesToMegabytes(long bytes) { + return bytes / 1024 / 1024; + } + + public static long megabytesToBytes(long megabytes) { + return megabytes * 1024 * 1024; + } + public static String getDownloadLink(HttpServletRequest request, FileEntity fileEntity) { return request.getScheme() + "://" + request.getServerName() + "/file/" + fileEntity.uuid; }