<br>Só complementando a frase &#39;Mas o lance dos ifs, é só mais um jeito de fazer a mesma coisa, só q de maneira mais resumida, para facilitar.&#39;. O &#39;facilitar&#39; refere-se a casos em que você tem poucas condições dentro do if. Quando você tiver muitas expressões, ou várias expressões para comparar com as condições dentro desse tipo de if, é preferível você usar o if &#39;tradicional&#39; ...<br>
<br><br>Cheers!<br>.<br><br><div class="gmail_quote">2009/5/6 Andre Carneiro <span dir="ltr">&lt;<a href="mailto:andregarciacarneiro@gmail.com">andregarciacarneiro@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Não posso te ajudar muito com o problema de md5_base64, porque nunca usei.<br><br>Mas o lance dos ifs, é só mais um jeito de fazer a mesma coisa, só q de maneira mais resumida, para facilitar.<br>.<br>.<br>.<br>#Exemplo cretino...<br>

$var = &#39;1&#39; if $var &gt; 1;<br><br>é a mesma coisa que <br><br>if($var &gt;1){<br>    $var = 1;<br>}<br><br>O primeiro if é uma opção q se tem em Perl, para não precisar usar &#39;{ }&#39;. 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ê.<br>

<br>Repare que no primeiro if eu também omiti parênteses. É uma coisa que podemos fazer em Perl também.<br><br><br><br><br>Se tiver mais dúvidas, tente colocar o mais detalhadamente possível ok?<br><br><br>Até mais!<br><br>

<br><br><div class="gmail_quote">2009/5/6 Carlos Eduardo Langoni <span dir="ltr">&lt;<a href="mailto:ce.langoni@gmail.com" target="_blank">ce.langoni@gmail.com</a>&gt;</span><div><div></div><div class="h5"><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

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