unit uCriptografia; interface uses uTPLb_CryptographicLibrary, uTPLb_Codec, //Componentes LockBox System.SysUtils //FreeAndNil ; const Key = 'ValorChave'; //Valor chave para Encriptar e Decriptar(Use um seu) function encriptar(const Valor :String):String; function decriptar(const Valor :String):String; implementation function encriptar(const Valor :String):String; var CryptoLib: TCryptographicLibrary; Codec: TCodec; begin Result := ''; CryptoLib := TCryptographicLibrary.Create(nil); Codec := TCodec.Create(nil); try Codec.CryptoLibrary := CryptoLib; Codec.StreamCipherId := 'native.StreamToBlock'; Codec.BlockCipherId := 'native.AES-256'; //Encriptação AES 256 bits Codec.ChainModeId := 'native.CBC'; Codec.Reset; Codec.Password := Key; //Atribuindo a chave para a Criptografia Codec.EncryptString(Valor, Result, TEncoding.UTF8); finally FreeAndNil(CryptoLib); FreeAndNil(Codec); end; end; function decriptar(const Valor :String):String; var CryptoLib: TCryptographicLibrary; Codec: TCodec; begin Result := ''; CryptoLib := TCryptographicLibrary.Create(nil); Codec := TCodec.Create(nil); try Codec.CryptoLibrary := CryptoLib; Codec.StreamCipherId := 'native.StreamToBlock'; Codec.BlockCipherId := 'native.AES-256'; //Encriptação AES 256 bits Codec.ChainModeId := 'native.CBC'; Codec.Reset; Codec.Password := Key; //Atribuindo a chave para Decriptografia Codec.DecryptString(Result, Valor, TEncoding.UTF8); finally FreeAndNil(CryptoLib); FreeAndNil(Codec); end; end; end.
Para usar é só declarar a Unit(uCriptografia) nas Uses do projeto e chamar as funções diretamente.
Boa tarde,
ResponderExcluiradicionei o componente LockBox 3.1.3 ao projeto.
Ao compilar retorna erros no trecho:
"Codec.EncryptString(Valor, Result, TEncoding.UTF8);"
E2033 Types of actual and formal var parameters must be identical
W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
E2034 Too many actual parameters
Tens alguma idéia ou então a versão do componente que utilizastes?
Boa tarde!
ExcluirVocê pode mudar a tipo da variável (Valor e/ou Result) de String para AnsiString ou então utiliza o lockbox 3.5.1 o qual eu testei.
Segue abaixo o link do projeto ja feito, e também do componente caso precise.
Projeto: https://drive.google.com/file/d/0ByS4MXm_g-hFRlVUcjF6d3RJdWs/view?usp=sharing
LockBox 3.5.1: https://github.com/TurboPack/LockBox3/
É possível informar a Key e IV que o TCodec deve se basear para gerar minha criptografia?
ResponderExcluirBoa noite Fábio!
ExcluirDesculpe-me pela demora!
É possível sim. No exemplo acima eu criei uma constante com a KEY na linha 10 e 11.
E na linha 34 e 57 eu atribuir key para o TCodec.
Você pode substituir a key na constante ou atribuir uma string diretamente para Codec.Password := 'aqui sua key';
Valeu!
Saudações, desejo uma informação, aonde posso baixar esse componente para versão do Delphi Berlin Update 2?
ResponderExcluirAntônio,
ExcluirBoa noite!
Componente para Berlin Update 2.
LockBox 3.5.1: https://github.com/TurboPack/LockBox3/
É possível informar a Key e IV que o TCodec deve se basear para gerar minha criptografia?
ResponderExcluirEu tentei sem passar e tá dando erro de "No mapping for the Unicode character exists in the target multi-byte code page."