Class RSAHybridCryptography
java.lang.Object
AEDs3.Cryptography.RSAHybridCryptography
- All Implemented Interfaces:
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 -
Method Summary
Modifier and TypeMethodDescriptionvoiddecrypt(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.voidCriptografa 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.
-
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:
encryptin interfaceEncryptionSystem- 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:
decryptin interfaceEncryptionSystem- 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.
-