[SP-pm] md5_base64

Andre Carneiro andregarciacarneiro at gmail.com
Wed May 6 09:27:27 PDT 2009


Não posso te ajudar muito com o problema de md5_base64, porque nunca usei.

Mas o lance dos ifs, é só mais um jeito de fazer a mesma coisa, só q de
maneira mais resumida, para facilitar.
.
.
.
#Exemplo cretino...
$var = '1' if $var > 1;

é a mesma coisa que

if($var >1){
    $var = 1;
}

O primeiro if é uma opção q se tem em Perl, para não precisar usar '{ }'.
Não sei ao certo se esse tipo de coisa é recomendável usar. Mas pela sua
reação, imagino que não seja, pois não ficou muito claro pra você.

Repare que no primeiro if eu também omiti parênteses. É uma coisa que
podemos fazer em Perl também.




Se tiver mais dúvidas, tente colocar o mais detalhadamente possível ok?


Até mais!



2009/5/6 Carlos Eduardo Langoni <ce.langoni at gmail.com>

> Amigos,
>
> Como disse inicialmente pra vocês estou iniciando em perl com o
> objetivo de fazer algumas modificações em um sistema chamado nocat,
> com o objetivo de integra-lo a uma solução que estou desenvolvendo.
>
> O sistema está feito em php+mysql e o nocat em perl, no fim das contas
> estou usando php, perl e shell script (com pretenção futura de remover
> o shell e substituir por puro perl).
>
> Tudo caminhava muito bem na parte de php e shell, até mesmo a parte
> que eu precisaria mexer em perl já estava acertada, mas nada hora de
> testar o sistema completo (essas coisas sempre acontecem no final)
> tive problemas com a autenticação do usuário :( o nocat (perl) não
> consegue interpretar a senha q eu salvo usando o php :(
>
> Fuçando no fonte do nocat atrás de descobrir a forma de encriptação
> utilizada (que inicialmente achei que fosse md5) eu encontrei uma
> chamada a uma função chamada md5_base64.
>
> Ele começa as referências a md5_base64 no começo do arquivo DBI.pm
> onde encontro:
> use Digest::MD5 qw( md5_base64 );
>
> mais abaixo no mesmo arquivo eu encontro:
> $user->set_password( md5_base64( $user->passwd ), 1 ) if
> $user->changed_password;
> (talvez eu esteja acostumado de mais com identação, mas esta linha não
> fez mto sentido pra mim)
> Esta linha faz parte do seguinte bloco:
> sub check_password {
>    my ($self, $user) = @_;
>    # MD5 the password if it's not already MD5'd, prior to actually using
> it.
>    $user->set_password( md5_base64( $user->passwd ), 1 ) if
> $user->changed_password;
>    return $user->passwd;
> }
>
> e depois ainda tem:
> return md5_base64( $user_pw ) eq $stored_pw;
> como parte do bloco:
> sub authenticate_user {
>    my ($self, $user_pw, $user) = @_;
>    my $stored_pw = $self->check_password( $user );
>    return md5_base64( $user_pw ) eq $stored_pw;
> }
>
> Na primeira vez que analisei o código para ver qual o método de
> encriptação era utilizado para as senhas eu acreditei que fosse md5,
> mas depois percebi que o hash gerado por ele não se parece em nada com
> md5, aí encontrei a função crypt como parte do seguinte bloco:
>
> sub md5_hash {
>    my ( $self, $string, $salt ) = @_;
>
>    unless ( $salt ) {
>        my @chars = ( "0".."9", "a".."z", "A".."Z", ".", "/" );
>        $salt  = "";
>        $salt .= @chars[int rand @chars] for ( 1 .. 8 );
>    }
>
>    $salt = '$1$' . substr( $salt, 0, 8 ) if $salt !~ /^\$1\$/o;
>
>    return crypt( $string, $salt );
> }
>
> E analisando a url http://www.osix.net/modules/article/?id=571
> acreditei que fosse DES-std, mas nenhuma das formas que testei com php
> conseguiu gerar uma senha que o nocat conseguisse interpretar.
>
> Uma coisa que me deixa encucado, sem entender direito, são esses IFs
> na rente de linhas como  $salt = '$1$' . substr( $salt, 0, 8 ) if
> $salt !~ /^\$1\$/o;
>
> Tem algum companheiro na lista que pode me ajudar a entender tudo isso?
>
> Obrigado a todos desde já!
> Abraços
> Kadu
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm at pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
André Garcia Carneiro
Analista/Desenvolvedor Perl
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20090506/e2ef43de/attachment.html>


More information about the SaoPaulo-pm mailing list