Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

adilson custodio

Hashing de Senhas no MySQL 4.1

Recommended Posts

Tenho um base no mysql 4.0 funcionando em uma outra maquina tenho mysql 5.0 também funcionando fiz um backup da base de dados do mysql 4 e restaurei no mysql 5.0 e esta funcionando normal so que nesta base tenho um tabela usuarios quando tento logar com o usuario desta tabelas ele não consegue conectar. Mas consigo criar novos usuarios e funciona normal. Como faço para que essa minha base do mysql 4.0 funcione no mysql 5.0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe alguma diferença entre a coluna senha da tabela do banco de dados no MySQL 4.0 e a coluna senha da tabela do banco de dados no MySQL 5.0?

Se a coluna tiver o mesmo tipo de dados e o mesmo conteúdo, verique o seu software. Problemas de senha entre a versão 4 e a versão 5 são de usuários do MySQL, utilizam ou não OLD_PASSWORD.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe alguma diferença entre a coluna senha da tabela do banco de dados no MySQL 4.0 e a coluna senha da tabela do banco de dados no MySQL 5.0?

Se a coluna tiver o mesmo tipo de dados e o mesmo conteúdo, verique o seu software. Problemas de senha entre a versão 4 e a versão 5 são de usuários do MySQL, utilizam ou não OLD_PASSWORD.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

O que acontece é seguinte é uma base dados de um portal rodando no mysql 4.0 dentro da base temos um tabela chamada userportal onde login, senha, nome etc, quando passei a passei a base de dados para outra maquina com mysql 5. funcionou normal para fazer a pesquisa de documento, noticias na base dados funciona normal mas quando um usuario tenta se logar pelo portal ele não consegue se eu criou um usuario no novo ele consegue se logar normalmente.

 

Verifique a tabela e usuario e verifique que quando eu crie o usuario ele criptograficou ficando assim ex: *43c8aa34cdc98eddd3de1fe9a9c2c2a9f92bb2098d75 e o usuario antigo na versão 4.0 esta assim ex: 6f8c114b58f2ce9e

 

Então quando usuario antigo tenta conectar ele não reconhece a senha

 

Gostaria de saber se tem um jeito para mudar todos os usuarios antigos para este tipo de senha criptografada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conecte-se ao MySQL e entre com o comando:

 

SHOW CREATE TABLE userportal;

Copie o resultado desta consulta e cole aqui no fórum!

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

+-------------+----------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ------------------------------------------------------------------------------+

| eZUser_User | CREATE TABLE `eZUser_User` (

`ID` int(11) NOT NULL default '0',

`Login` varchar(50) NOT NULL,

`Password` varchar(50) NOT NULL,

`Email` varchar(50) default NULL,

`FirstName` varchar(50) default NULL,

`LastName` varchar(50) default NULL,

`InfoSubscription` int(11) default '0',

`Signature` text NOT NULL,

`SimultaneousLogins` int(11) NOT NULL default '0',

`CookieLogin` int(11) default '0',

`Skin` varchar(50) NOT NULL default '',

`Empresa` varchar(100) default NULL,

`Cargo` varchar(100) default NULL,

`DDD_Fone` varchar(10) default NULL,

`Fone` varchar(30) default NULL,

`Fax` varchar(30) default NULL,

`DDD_Fax` varchar(10) default NULL,

`Programa` varchar(20) default NULL,

`Turma` varchar(80) default NULL,

`Curriculo` text,

`ImageID` int(11) default NULL,

`Relacao` int(11) NOT NULL default '0',

PRIMARY KEY (`ID`),

UNIQUE KEY `User_Login` (`Login`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 |

+-------------+----------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ------------------------------------------------------------------------------+

1 row in set (0.00 sec)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos, ocorre que mudaram o algoritmo de hashing que armazena(gera) as senhas dos usuarios do banco. No MySQL 4 era um algoritmo, no 5 eh outro

 

 

http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html

 

 

 

The Password column of the user table (in which these hashes are stored) also is 16 bytes long before MySQL 4.1.

 

As of MySQL 4.1, the PASSWORD() function has been modified to produce a longer 41-byte hash

 

 

 

Agora pra no MySQL 5 você conseguir usar as senhas do MySQL 4 você tem q usar a função OLD_PASSWORD() e/ou logar com a opçao --old-password

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo bem Giesta,

 

ótima informação, mas isso trata da tabela User do banco de dados mysql.

A questão é o problema de senha que ocorre na tabela do sistema dele, do banco de dados que ele criou.

Estranho pois o campo não utiliza nenhum encriptação.

 

Olha só a estrutura da tabela dele, o campo Password, estranho...

 

Dentro do código que faz a INSERÇÃO dos dados nessa sua tabela, a instrução INSERT utiliza alguma função do MySQL para armazenar dados na coluna Password? Pode ser que esteja utilizando a função Password(), aí cai no caso que Giesta salientou no post anterior.

 

Verifique... :mellow:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo bem Giesta,

 

ótima informação, mas isso trata da tabela User do banco de dados mysql.

A questão é o problema de senha que ocorre na tabela do sistema dele, do banco de dados que ele criou.

Estranho pois o campo não utiliza nenhum encriptação.

 

Olha só a estrutura da tabela dele, o campo Password, estranho...

 

Dentro do código que faz a INSERÇÃO dos dados nessa sua tabela, a instrução INSERT utiliza alguma função do MySQL para armazenar dados na coluna Password? Pode ser que esteja utilizando a função Password(), aí cai no caso que Giesta salientou no post anterior.

 

Verifique... :mellow:

 

A função que valida usuario

 

function validateUser( $login, $password )

{

$db =& eZDB::globalDatabase();

$ret = false;

 

$login = $db->escapeString( $login );

$password = $db->escapeString( $password );

 

 

if ( $db->isA() == "mysql" )

{

$db->array_query( $user_array, "SELECT * FROM eZUser_User

WHERE Login='$login'

AND Password=PASSWORD('$password')" );

}

else

{

$password = md5( $password );

 

$db->array_query( $user_array, "SELECT * FROM eZUser_User

WHERE Login='$login'

AND Password='$password'" );

}

 

if ( count( $user_array ) == 1 )

{

$ret = new eZUser( $user_array[0][$db->fieldName("ID")] );

$GLOBALS["eZCurrentUserObject"] =& $ret;

 

}

return $ret;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo bem Giesta,

 

ótima informação, mas isso trata da tabela User do banco de dados mysql.

A questão é o problema de senha que ocorre na tabela do sistema dele, do banco de dados que ele criou.

Estranho pois o campo não utiliza nenhum encriptação.

 

Olha só a estrutura da tabela dele, o campo Password, estranho...

 

Dentro do código que faz a INSERÇÃO dos dados nessa sua tabela, a instrução INSERT utiliza alguma função do MySQL para armazenar dados na coluna Password? Pode ser que esteja utilizando a função Password(), aí cai no caso que Giesta salientou no post anterior.

 

Verifique... :mellow:

 

A função que valida usuario

 

function validateUser( $login, $password )

{

$db =& eZDB::globalDatabase();

$ret = false;

 

$login = $db->escapeString( $login );

$password = $db->escapeString( $password );

 

 

if ( $db->isA() == "mysql" )

{

$db->array_query( $user_array, "SELECT * FROM eZUser_User

WHERE Login='$login'

AND Password=PASSWORD('$password')" );

}

else

{

$password = md5( $password );

 

$db->array_query( $user_array, "SELECT * FROM eZUser_User

WHERE Login='$login'

AND Password='$password'" );

}

 

if ( count( $user_array ) == 1 )

{

$ret = new eZUser( $user_array[0][$db->fieldName("ID")] );

$GLOBALS["eZCurrentUserObject"] =& $ret;

 

}

return $ret;

}

 

 

 

OBRIGADO Wagner Bianchi e Giesta mudei a função password para Old_password e deu certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.