GARANTIR DESCONTO

Fórum DCPCrypt2 + Delphi 7 #405031

14/07/2011

0

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

Abraão Monteiro

Responder

Posts

18/07/2011

Abraão Monteiro

    Estou criptografando um pequeno texto do seguinte modo:
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
Responder

Gostei + 0

20/07/2011

Abraão Monteiro

Boa tarde pessoal, estou utilizando o seguinte source agora:
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?
Responder

Gostei + 0

21/07/2011

Abraão Monteiro

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!
Responder

Gostei + 0

09/05/2013

José

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar