Class RSAHybridCryptography

java.lang.Object
AEDs3.Cryptography.RSAHybridCryptography
All Implemented Interfaces:
EncryptionSystem

public class RSAHybridCryptography extends Object implements EncryptionSystem
Classe responsável pela criptografia híbrida de arquivos utilizando AES para o conteúdo e RSA para a criptografia da chave AES. O AES é usado para criptografar o conteúdo do arquivo, enquanto o RSA é utilizado para criptografar a chave AES, garantindo assim a segurança dos dados.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    decrypt(String encryptedFilePath, String outputFilePath, PrivateKey privateKey)
    Descriptografa um arquivo que foi criptografado com AES, utilizando uma chave AES que foi previamente criptografada manualmente com RSA.
    static byte[]
    decryptAESKeyWithRSA(byte[] encryptedAESKey, PrivateKey privateKey)
    Descriptografa a chave AES que foi criptografada manualmente com RSA, utilizando a operação de decodificação modular: M = C^d mod n.
    void
    encrypt(String originalFilePath, String encryptedFilePath, PublicKey publicKey)
    Criptografa um arquivo utilizando uma chave AES gerada aleatoriamente e, em seguida, criptografa essa chave AES com RSA de forma manual, utilizando BigInteger.
    static byte[]
    encryptAESKeyWithRSA(byte[] aesKeyBytes, PublicKey publicKey)
    Criptografa a chave AES utilizando a chave pública RSA de forma manual, através da operação de exponenciação modular: C = M^e mod n.
    static byte[]
    fixAESKeyLength(byte[] rawBytes, int expectedLength)
    Ajusta a chave AES para garantir que ela tenha exatamente o tamanho esperado.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • RSAHybridCryptography

      public RSAHybridCryptography()
  • Method Details

    • encrypt

      public void encrypt(String originalFilePath, String encryptedFilePath, PublicKey publicKey) throws IOException
      Criptografa um arquivo utilizando uma chave AES gerada aleatoriamente e, em seguida, criptografa essa chave AES com RSA de forma manual, utilizando BigInteger.
      Specified by:
      encrypt in interface EncryptionSystem
      Parameters:
      originalFilePath - Caminho do arquivo original que será criptografado.
      encryptedFilePath - Caminho onde o arquivo criptografado será armazenado.
      publicKey - Chave pública RSA utilizada para criptografar a chave AES.
      Throws:
      IOException - Se ocorrer um erro durante a leitura ou escrita dos arquivos.
    • decrypt

      public void decrypt(String encryptedFilePath, String outputFilePath, PrivateKey privateKey) throws IOException
      Descriptografa um arquivo que foi criptografado com AES, utilizando uma chave AES que foi previamente criptografada manualmente com RSA.
      Specified by:
      decrypt in interface EncryptionSystem
      Parameters:
      encryptedFilePath - Caminho do arquivo criptografado que será lido.
      outputFilePath - Caminho onde o arquivo descriptografado será salvo.
      privateKey - Chave privada RSA utilizada para recuperar a chave AES.
      Throws:
      IOException - Se ocorrer um erro durante a leitura ou escrita dos arquivos.
    • encryptAESKeyWithRSA

      public static byte[] encryptAESKeyWithRSA(byte[] aesKeyBytes, PublicKey publicKey) throws IOException
      Criptografa a chave AES utilizando a chave pública RSA de forma manual, através da operação de exponenciação modular: C = M^e mod n.
      Parameters:
      aesKeyBytes - Bytes da chave AES que será criptografada.
      publicKey - Chave pública RSA utilizada para a criptografia.
      Returns:
      Um array de bytes representando a chave AES criptografada com RSA.
      Throws:
      IOException - Se ocorrer um erro ao acessar os parâmetros da chave RSA.
    • decryptAESKeyWithRSA

      public static byte[] decryptAESKeyWithRSA(byte[] encryptedAESKey, PrivateKey privateKey) throws IOException
      Descriptografa a chave AES que foi criptografada manualmente com RSA, utilizando a operação de decodificação modular: M = C^d mod n.
      Parameters:
      encryptedAESKey - Array de bytes da chave AES criptografada com RSA.
      privateKey - Chave privada RSA utilizada para a descriptografia.
      Returns:
      Um array de bytes representando a chave AES original.
      Throws:
      IOException - Se ocorrer um erro ao acessar os parâmetros da chave RSA.
    • fixAESKeyLength

      public static byte[] fixAESKeyLength(byte[] rawBytes, int expectedLength)
      Ajusta a chave AES para garantir que ela tenha exatamente o tamanho esperado. Se necessário, remove ou preenche os bytes à esquerda para ajustar o tamanho.
      Parameters:
      rawBytes - Array de bytes da chave após a descriptografia.
      expectedLength - Tamanho esperado da chave (por exemplo, 16 para AES-128).
      Returns:
      Um array de bytes representando a chave ajustada com o tamanho correto.