Duvida Sistema de senha com criptográfia

Discussão em 'Progress 4GL' iniciado por lwazevedo, Julho 30, 2014.

  1. lwazevedo

    lwazevedo Membro Ativo

    Boa noite.

    Caros,

    Gostaria de saber se alguém já fez algum sistema de login com criptográfia ? ou ate mesmo um sistema que gera senhas randomicamente que verifique se a senha é forte ou media ou fraca, e que faça a criptográfia da mesma.

    Obrigado.
  2. Agnaldo

    Agnaldo Membro Ativo

    Aqui um exemplo bem simples, usando MD5 (precisa de Progress 10 em diante).

    PHP:
    DEFINE VARIABLE senhaCHAR AS CHARACTER.
    DEFINE VARIABLE senhaRAW  AS RAW.
    DEFINE VARIABLE senhaMD5  AS CHARACTER.
    DEFINE VARIABLE conta     AS INTEGER.
    DEFINE VARIABLE auxiliar  AS CHARACTER.

    FUNCTION 
    ConverteInteiroParaHexadecimal RETURNS CHARACTER (INPUT n AS INTEGER).
      
    DEFINE VARIABLE caracteresHexadecimal AS CHARACTER INIT "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f" NO-UNDO.
      RETURN (IF 
    n > 15 THEN ConverteInteiroParaHexadecimal( INTEGER(TRUNCATE(n / 16, 0))) ELSE "") + ENTRY(n MOD 16 + 1, caracteresHexadecimal).
    END FUNCTION. /* FUNCTION ConverteInteiroParaHexadecimal RETURNS CHARACTER (INPUT n AS INTEGER) */


    senhaCHAR = "minha senha".
    senhaRAW  = MD5-DIGEST(senhaCHAR).
    senhaMD5  = "".

    DO 
    conta = 1 TO LENGTH(senhaRAW):
        
    auxiliar = ConverteInteiroParaHexadecimal(GET-BYTE(senhaRAW,conta)).
        IF 
    LENGTH(auxiliar) = 1 THEN auxiliar = "0" + auxiliar.
        
    senhaMD5 = senhaMD5 + auxiliar.
    END.
    senhaMD5 = CAPS(senhaMD5).
    DISPLAY senhaMD5 FORMAT "X(50)".
    pizzaia curtiu isso.
  3. jaisonantoniazzi

    jaisonantoniazzi Membro Ativo

    Bom dia @lwazevedo tudo bom?
    Sou palestrante de criptografia pela UDESC, UNIVILLE e UFOP, além de ter desenvolvido o Neo Step WarFile e Neo Step Cosmos (veja em neostep.com.br).
    Falando tecnicamente, você precisa calcular com MD5 ou SHA (Secure Hash Algortihm - Minha preferência) a senha e armazenar no banco, depois calcular o que foi digitado e simplesmente comparar ambas.
    Como funções HASH são unidirecionais, não deve haver meio de retornar o que foi calculado, por isso você deve comparar a senha do banco com o que foi digitado e calculado. Além de poderem calcular um texto de entrada de qualquer tamanho, retornar sempre um tamanho fixo e parecer aleatório.
    Já implementei sistema de cálculo para senha, há alguns métodos para fazer isso, mas não tenho certeza se há algum método RFC para tanto.
    Vale lembrar que o SHA do Progress ABL é antigo, então sugiro usar outras linguagens mais atualizadas para calcular um SHA mais seguro.

    Fiz este exemplo http://4each.com.br/resources/calcular-sha1.58/ para você brincar :D

    Forte abraço.
  4. lwazevedo

    lwazevedo Membro Ativo

    Obrigado @Agnaldo pela dica.

    Tudo certo @jaisonantoniazzi e com você ? Obrigado pelas dicas, vou dar uma olhada nisso. Na realidade o que estou fazendo é um projetinho para a cadeira de segurança na faculdade, como conheço mais progress do que outras linguagens decidi fazer com o mesmo. Eu preciso fazer um programa que eu coloque um senha e identifica se a mesma é fraca, media ou forte, vou precisar criptografar a mesma no braço e depois usar o md5 também, além de ter que fazer uma funcionalidade que gere senhas randomicamente e que sejam verificadas pela primeira função que fiz. Se tu tiver algum material sobre o assunto e poder me conseguir agradeceria. meu e-mail é lwazevedo@live.com.

    Obrigado @jaisonantoniazzi .
    Abraço.

Compartilhe esta Página