DCPCrypt2 + Delphi 7
Boa tarde pessoal, Gostaria de saber se o DCPCrypt2 é compatível com o Delphi 7. Tentei abrir o projeto para poder instalar o pacote mas não achei o mesmo para Delphi 7. Alguém já instalou ele nesta versão do Delphi? Desde já agradeço!
Abraão Monteiro
Curtidas 0
Respostas
Abraão Monteiro
14/07/2011
Estou criptografando um pequeno texto do seguinte modo:
Obtive como saída:
Somente os 16 primeiros bytes de entrada são criptografados satisfatoriamente, os outros continuam zerados. Seria algo relacionado a alguma limitação da codificação ECB? Os dados de entrada devem ser múltiplos de algum valor que desconheço? No caso utilizo 256 bytes de dados de entrada. Desde já agradeço! Abraão
procedure TForm1.Button1Click(Sender: TObject);const//CHAVE: 39 31 30 30 30 30 36 30 30 36 30 30 39 30 37 39 30 30 39 30 30 33 39 30 33 34 32 39 30 38 35 32//TEXTO:// 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 39 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 39 31 32 // 33 34 35 3637 38 39 30 31 32 33 34 35 39 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 39 31 32 33 34 // 35 36 37 38 39 30 31 32 33 34 35 39 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 39 31 32 33 34 35 36 // 37 38 39 30 31 32 33 34 35 39 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 39 31 32 33 34 35 36 37 38 // 39 30 31 32 33 34 35 39 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 39 31 32 33 34 35 36 37 38 39 30 // 31 32 33 34 35 39 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 39 31 32 33 34 35 36 37 38 39 30 31 32 // 33 34 35 39 30 31 32 33 34 35 39 30 31 32 33 34 35 39 30 31 32 33 34 35 39 30 31 32 33 34 35 39 30 31 // 32 33 34 35 39 30 31 32 33 34 35 39 30 31 32 33 34 35
dados: array[0..255] of byte = ($31,$32,$33,$34,$35,$36,$37,$38,$39,$30,$31,$32,$33,$34,$35,$39,$31,$32,$33,$34,$35,$36, $37,$38,$39,$30,$31,$32,$33,$34,$35,$39,$31,$32,$33,$34,$35,$36,$37,$38,$39,$30,$31,$32, $33,$34,$35,$39,$31,$32,$33,$34,$35,$36,$37,$38,$39,$30,$31,$32,$33,$34,$35,$39,$31,$32, $33,$34,$35,$36,$37,$38,$39,$30,$31,$32,$33,$34,$35,$39,$31,$32,$33,$34,$35,$36,$37,$38, $39,$30,$31,$32,$33,$34,$35,$39,$31,$32,$33,$34,$35,$36,$37,$38,$39,$30,$31,$32,$33,$34, $35,$39,$31,$32,$33,$34,$35,$36,$37,$38,$39,$30,$31,$32,$33,$34,$35,$39,$31,$32,$33,$34, $35,$36,$37,$38,$39,$30,$31,$32,$33,$34,$35,$39,$31,$32,$33,$34,$35,$36,$37,$38,$39,$30, $31,$32,$33,$34,$35,$39,$31,$32,$33,$34,$35,$36,$37,$38,$39,$30,$31,$32,$33,$34,$35,$39, $31,$32,$33,$34,$35,$36,$37,$38,$39,$30,$31,$32,$33,$34,$35,$39,$31,$32,$33,$34,$35,$36, $37,$38,$39,$30,$31,$32,$33,$34,$35,$39,$30,$31,$32,$33,$34,$35,$39,$30,$31,$32,$33,$34, $35,$39,$30,$31,$32,$33,$34,$35,$39,$30,$31,$32,$33,$34,$35,$39,$30,$31,$32,$33,$34,$35, $39,$30,$31,$32,$33,$34,$35,$39,$30,$31,$32,$33,$34,$35); chave: array[0..31] of byte = ($39,$31,$30,$30,$30,$30,$36,$30,$30,$36,$30,$30,$39,$30,$37,$39,$30,$30,$39,$30,$30,$33, $39,$30,$33,$34,$32,$39,$30,$38,$35,$32);var dados_saida: array[0..255] of byte;begin FillChar(dados_saida,SizeOf(dados_saida),0); aes.Init(chave,256,nil); aes.EncryptECB(dados, dados_saida); memo1.Lines.Add('+ CRIPTOGRAFADO: ' + #13#10 + ByteToHex(dados_saida)); aes.DecryptECB(dados_saida,dados_saida); memo1.Lines.Add(#13#10 + '+ DESCRIPTOGRAFADO: ' + #13#10 + ByteToHex(dados_saida));end;Obtive como saída:
+ CRIPTOGRAFADO: 1B513F417650C9663851F1C0D3A10667000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + DESCRIPTOGRAFADO: 31323334353637383930313233343539000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Somente os 16 primeiros bytes de entrada são criptografados satisfatoriamente, os outros continuam zerados. Seria algo relacionado a alguma limitação da codificação ECB? Os dados de entrada devem ser múltiplos de algum valor que desconheço? No caso utilizo 256 bytes de dados de entrada. Desde já agradeço! Abraão
GOSTEI 0
Abraão Monteiro
14/07/2011
Boa tarde pessoal, estou utilizando o seguinte source agora:
No caso da criptografia no modo de operação CBC utiliza-se um vetor de inicialização(IV), mas no caso acima, assume-se um valor default para este vetor? Utiliza-se o hash da chave para gerar uma entrada em hexadecimal para a chave para o algoritmo do AES-256. Para o mesmo precisamos de 32 caracteres * 8 bits = 256 bits. Alguém pode me explicitar como é gerada a chave no algoritmo acima?
function TForm1.AESEncryptString(const S: string; Key: string): string; var lCrypt : TDCP_rijndael; begin lCrypt := TDCP_rijndael.Create(nil); try lCrypt.InitStr(Key,TDCP_sha256); Setlength(result, length(S)); lCrypt.EncryptCBC(S[1], result[1],length(S)); Result := Str2Base64Enc(Result); finally lCrypt.Free; end; end; function TForm1.AESDecryptString(const S: string; Key: string): string; var lCrypt :TDCP_rijndael; begin lCrypt := TDCP_rijndael.Create(nil); try lCrypt.InitStr(Key,TDCP_sha256); Result := Str2Base64Dec(S); lCrypt.DecryptCBC(Result[1], result[1], length(Result)); finally lCrypt.Free; end; end;
No caso da criptografia no modo de operação CBC utiliza-se um vetor de inicialização(IV), mas no caso acima, assume-se um valor default para este vetor? Utiliza-se o hash da chave para gerar uma entrada em hexadecimal para a chave para o algoritmo do AES-256. Para o mesmo precisamos de 32 caracteres * 8 bits = 256 bits. Alguém pode me explicitar como é gerada a chave no algoritmo acima?
GOSTEI 0
Abraão Monteiro
14/07/2011
Em ambos os sources acima, eu recebo como resposta somente a criptografia dos 16 primeiros bytes. Alguém poderia me dar uma opinião do porquê isto está acontecendo? Seria algum erro relacionado ao tamanho da chave ou da mensagem de entrada? Desde já agradeço as respostas!
GOSTEI 0
José
14/07/2011
Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0