[FUG-BR] RES: Off Topic: Postfix + mysql + troca de senha
Augusto Bott
bott em catho.com.br
Qui Fev 16 16:25:56 BRST 2006
-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160
A função ENCRYPT() do mysql é dependente de plataforma (ou pelo menos,
costumava ser...). Significa que ENCRYPT num linux não necessariamente
retorna a mesma coisa que num BSD.
ENCRYPT(), MD5() e SHA1() são exemplos de funções HASH (ou one-way).
Três propriedades são especialmente interessantes (entre outras):
a) para uma mesma entrada A, sempre haverá a mesma saída
(são determinísticas, com a mesma entrada, sempre a mesma saída);
b) se houver uma pequena variação na entrada (ex: 'aaadd' ou 'aAadd'), a
saída tende a ser completamende diferente;
c) a função direta é barata (de 'ida'), ou seja, do plaintext para o
encriptado é muito 'barato', rápido. Mas do encriptado para o plantext,
impraticavelmente cara (a função 'de volta'). A partir de da informação
encriptada, é praticamente impossível reaver a informação original.
Por esses motivos, são particularmente interessantes para armazenar
senhas e informações que apenas uma única pessoa deve saber - o usuário.
Agora, quanto a tua aplicação, recomendo usar PASSWORD() nativa do
MySQL, MD5, SHA1 ou outra qualquer (eu normalmente uso MD5 ou SHA1, pois
não depende de mandar a string da senha pela conexão no banco,
normalmente sem SSL). Como assim?
Duas alternativas para autenticar o usuário:
a) SELECT COUNT(1) FROM users WHERE username='someone'
AND PASSWORD=[ENCRYPT|MD5|SHA1|PASSWORD]('secret');
b) SELECT username, password FROM users WHERE username='someone';
em (a), a senha e o user trafegam em plaintext pela rede e podem
eventualmente aparecer em logs de acesso ao banco...
em (b), apenas o username trafega em plaintext, a senha faz parte do
retorno do pacote, encriptada. Nesse caso, deves calcular a senha
encriptada na aplicação e comparar com a resposta do banco (mas deverás
encriptar no banco com alguma função HASH também disponível no PHP ou
outra linguagem que fizeres a interface)
Augusto Bott
DBA - Administrador de Banco de Dados
Departamento de Redes e Tecnologia
E-mail: bott em catho.com.br
Telefone: +55 11 3177-0700 ext: 343
Celular: +55 11 7840-3154
Jabber: mestre em jabber.catho.com.br
MSN: augustobott em hotmail.com
ICQ: 710029
- ----------------------------------------------
Catho Online - Seu sucesso é o nosso negócio
http://www.catho.com.br
Fabrício Fadel Kammer wrote:
> Entao Robson, o problema é comparar :-)
>
> Não sei como descriptografar a senha...
>
> -----Mensagem original-----
> De: freebsd-bounces em fug.com.br [mailto:freebsd-bounces em fug.com.br] Em
> nome de Robson Uchoa
> Enviada em: quinta-feira, 16 de fevereiro de 2006 14:18
> Para: Lista de discussao sobre FreeBSD
> Assunto: Re: [FUG-BR] Off Topic: Postfix + mysql + troca de senha
>
>
> Por que você não tenta indexar pelo nome ou número do usuário (ou outro
> campo que seja único) ao invés da senha?
>
> update senha =encrypt(senhanova) from email where username =
> nomedeusuario;
>
> É lógico que você deve verificar a senha antiga primeiro
>
> select senha from email where username = nomedeusuario;
>
> e comparar.
>
>
> Fabrício Fadel Kammer escreveu:
>
>>Salve galera!
>>
>>Sei q eh bem off essa questao, mas se alguem já conseguiu fazer isso e
>
>
>>puder me ajudar...
>>
>>Tenho um servidor postfix e as senhas sao armazenadas no banco de
>>dados usando a funcao encrypt() do mysql...
>>
>>Alguém já fez uma interface em PHP para alteracao de senha que ta
>>armazenada com encrypt()???
>>
>>O problema ta em testar a senha antiga, pq o encrypt usa o salt e se
>>vc fizer encrypt('teste') 10 x tera 10 valores diferente, entao nao da
>
>
>>pra fazer update senha =encrypt(senhanova) from email where senha =
>>encrypt(senha_antiga); :-(
>>
>>[]s
>>_______________________________________________
>>freebsd mailing list
>>freebsd em fug.com.br
>>http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
>>
>>
>
> _______________________________________________
> freebsd mailing list
> freebsd em fug.com.br
> http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
>
> _______________________________________________
> freebsd mailing list
> freebsd em fug.com.br
> http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
>
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iD8DBQFD9MO0e+9A2H6dRtYRA7bZAJ9OMy3AIkFDOfNLjo7WHBvnOFmJ/QCff6rt
QAufuZPEabWG20JbpZ3RyVM=
=T97M
-----END PGP SIGNATURE-----
_______________________________________________
freebsd mailing list
freebsd em fug.com.br
http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
Mais detalhes sobre a lista de discussão freebsd