From 8be15dcac5bc5b699a1fad5b21b0aee17e752bd8 Mon Sep 17 00:00:00 2001 From: vedang29 Date: Fri, 18 Apr 2025 00:28:22 +0530 Subject: [PATCH] IMPLEMENTED ENCRYPTION & DECRYPTION --- .../controller/HDFScontroller.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/skycrate/backend/skycrateBackend/controller/HDFScontroller.java b/src/main/java/com/skycrate/backend/skycrateBackend/controller/HDFScontroller.java index 54adc74..88134aa 100644 --- a/src/main/java/com/skycrate/backend/skycrateBackend/controller/HDFScontroller.java +++ b/src/main/java/com/skycrate/backend/skycrateBackend/controller/HDFScontroller.java @@ -73,29 +73,30 @@ public class HDFScontroller { @RequestParam String uploadedFileName, @RequestParam String username) { try { - // Retrieve the user from the database using the username - User user = userRepository.findByUsername(username).orElseThrow(() -> new RuntimeException("User not found")); - - // Get the public key from the user entity + // Step 1: Retrieve the user and their RSA public key + User user = userRepository.findByUsername(username) + .orElseThrow(() -> new RuntimeException("User not found")); byte[] publicKeyBytes = user.getPublicKey(); PublicKey publicKey = RSAKeyUtil.getPublicKeyFromBytes(publicKeyBytes); - // Encrypt the file content using the public key - byte[] encryptedData = encryptFile(file, publicKey); + // Step 2: Encrypt the file content using hybrid encryption (AES + RSA) + byte[] fileBytes = file.getBytes(); + byte[] encryptedData = EncryptionUtil.encrypt(fileBytes, publicKey); - // Upload the encrypted file to HDFS + // Step 3: Upload encrypted data to HDFS hdfsOperations.uploadFile(encryptedData, hdfsPath, uploadedFileName, username); return new ResponseDTO("File uploaded successfully", true); } catch (IOException e) { e.printStackTrace(); - return new ResponseDTO("Failed to upload file locally: " + e.getMessage(), false); + return new ResponseDTO("Failed to read file: " + e.getMessage(), false); } catch (Exception e) { e.printStackTrace(); return new ResponseDTO("Failed to upload file to HDFS: " + e.getMessage(), false); } } + // Helper method to encrypt the file content using RSA encryption private byte[] encryptFile(MultipartFile file, PublicKey publicKey) throws Exception { // Step 1: Generate a random AES key