Como usar o Encrypt no Progress?

Discussão em 'Banco de Dados / Database' iniciado por laureanomn, Junho 16, 2010.

  1. laureanomn

    laureanomn Sem Pontuação

    Boa tarde!

    Pessoal, como faço para usar o Encrypt no Progress?

    O parâmetro Chave que passo na função tem que se de que tipo?

    Posso usar mais algoritmos além daqueles que o Progress oferece suporte nativo, como o MCRYPT_RIJNDAEL_256 disponível no PHP?

    Muito Obrigado,

    Abraços.
  2. kirchner

    kirchner Membro Participativo Moderador

    laureanomn,

    O Rinjdael é o próprio AES, se não me engano. O 4GL suporta AES_CBC_256, que é o AES 256 com Cipher-block chaining.
    Tanto a chave quanto o IV são do tipo RAW.

    Eu tinha um sistema que usava isso, mas descontinuei a feature. Se eu achar aqui te mando um programa.

    Mas a linha geral é:
    - gera uma chave, pode ser com a função GENERATE-PBE-KEY;
    - gera um IV (opcional);
    - chama a função passando dado, chave, IV e algoritmo.
  3. laureanomn

    laureanomn Sem Pontuação

    Marcos,

    Deu certo, obrigado.

    o código ficou assim:

    Código:
    define variable vraw-key       as raw       no-undo.
    define variable vraw-iv        as raw       no-undo.
    define variable vcha-senha     as character no-undo.
    define variable vcha-resultado as character no-undo.
    define variable vcha-chave     as character no-undo.
    
    assign vcha-senha = "senha"
              vcha-chave = "chave".
    
    assign vraw-iv = GENERATE-PBE-SALT.
    
    assign vraw-key = GENERATE-PBE-KEY(vcha-chave,vraw-iv).
    
    assign vcha-resultado = string(encrypt(vcha-senha,vraw-key,vraw-iv,"AES_CBC_128")).
    
    display vcha-resultado skip.
    
    display string(vraw-iv) skip.
    
    Notei que o IV varia, sendo criado um novo a cada nova execução, devo armazená-lo no banco em outro campo para mais tarde poder descriptografar a senha?

    Tem como criar um IV fixo, que serviria como uma segunda chave para criptografar e descriptografar o conteúdo?

    Obrigado,

    Att,

    Laureano
  4. kirchner

    kirchner Membro Participativo Moderador

    Laureano,

    Você precisa do IV para abrir o texto cifrado.
    Você pode usar um IV fixo sim, mas o objetivo de usar o IV é que cifrar o mesmo texto duas vezes com a mesma chave gerem valores diferentes. Mais seguro.

    Se você usar um IV fixo, e alguém ver que tem 2 valores iguais na coluna, é provável que os 2 textos originais sejam iguais. Com IV aleatório, o texto cifrado ficaria diferente.

Compartilhe esta Página