Para criptografar um arquivo em Delphi, você pode usar bibliotecas externas ou implementar seu próprio algoritmo de criptografia. Implementar um algoritmo de criptografia seguro é uma tarefa complexa, e é recomendável usar bibliotecas ou ferramentas específicas para essa finalidade, como OpenSSL, bcrypt, ou bibliotecas de criptografia AES.
Aqui está um exemplo simples usando a biblioteca OpenSSL em Delphi para criptografar e descriptografar um arquivo usando o algoritmo AES. Você precisará instalar a biblioteca OpenSSL e a biblioteca Indy para executar este exemplo:
uses SysUtils, Classes, IdSSLOpenSSL, IdGlobal, IdCoderMIME; procedure EncryptFile(inputFileName, outputFileName, password: string); var InputFileStream, OutputFileStream: TFileStream; AES: TIdSSLIOHandlerSocketOpenSSL; begin InputFileStream := TFileStream.Create(inputFileName, fmOpenRead); OutputFileStream := TFileStream.Create(outputFileName, fmCreate); AES := TIdSSLIOHandlerSocketOpenSSL.Create(nil); try AES.CipherList := 'AES128'; AES.PassThrough := False; AES.Destination := OutputFileStream; AES.InputBuffer := InputFileStream; AES.OnBeforeConnect := procedure begin AES.PassThrough := False; AES.SSLOptions.Method := sslvSSLv23; AES.SSLOptions.Mode := sslmCipher; AES.SSLOptions.CipherList := 'AES128'; AES.SSLOptions.KeyMode := keyAES128; AES.SSLOptions.Key := TIdBytes(password); AES.SSLOptions.KeySize := 128; end; AES.OpenWriteBuffer; AES.CloseWriteBuffer; finally AES.Free; InputFileStream.Free; OutputFileStream.Free; end; end; procedure DecryptFile(inputFileName, outputFileName, password: string); var InputFileStream, OutputFileStream: TFileStream; AES: TIdSSLIOHandlerSocketOpenSSL; begin InputFileStream := TFileStream.Create(inputFileName, fmOpenRead); OutputFileStream := TFileStream.Create(outputFileName, fmCreate); AES := TIdSSLIOHandlerSocketOpenSSL.Create(nil); try AES.CipherList := 'AES128'; AES.PassThrough := False; AES.Destination := OutputFileStream; AES.InputBuffer := InputFileStream; AES.OnBeforeConnect := procedure begin AES.PassThrough := False; AES.SSLOptions.Method := sslvSSLv23; AES.SSLOptions.Mode := sslmCipher; AES.SSLOptions.CipherList := 'AES128'; AES.SSLOptions.KeyMode := keyAES128; AES.SSLOptions.Key := TIdBytes(password); AES.SSLOptions.KeySize := 128; end; AES.OpenReadBuffer; AES.CloseReadBuffer; finally AES.Free; InputFileStream.Free; OutputFileStream.Free; end; end; procedure Main; begin try EncryptFile('input.txt', 'encrypted.bin', 'password123'); Writeln('Arquivo criptografado com sucesso.'); DecryptFile('encrypted.bin', 'decrypted.txt', 'password123'); Writeln('Arquivo descriptografado com sucesso.'); except on E: Exception do Writeln('Erro: ', E.Message); end; end; begin Main; end.
Neste exemplo, temos duas funções: EncryptFile e DecryptFile, que usam o OpenSSL para criptografar e descriptografar um arquivo, respectivamente. Certifique-se de substituir os nomes de arquivo e a senha pelo seu próprio contexto.
Além disso, este é um exemplo básico e não trata todos os casos possíveis, como erros de leitura/gravação de arquivo ou tratamento avançado de criptografia. Para fins de segurança real, considere consultar um especialista em segurança ou usar bibliotecas de criptografia comprovadas em vez de implementar seu próprio algoritmo.
Utilizamos cookies e outras tecnologias semelhantes para melhorar a sua experiência no nosso site.
Ao continuar navegando, você declara que está de acordo com a nossa política de privacidade.
Copyright © TyttoSoft 2018 | Desenvolvido por www.TyttoSoft.com.br