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.
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.
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
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.