Senha Hash cakephp

639 views
Skip to first unread message

Rafael Lazarine

unread,
Sep 24, 2012, 9:37:14 PM9/24/12
to cakep...@googlegroups.com
olá pessoal, estou usando o cake 2.1 e queria saber qual o hash padrão que ele usa, sempre quando vou salvar a senha no beforesSave coloco:

$this->data[$this->alias]['senha'] = AuthComponent::password($this->data[$this->alias]['senha']);


ele gera gera direitinho, mas queria saber o tipo de senha que o cake usa para quando o kra for redefinir a senha ele pegar a nova senha e fazer a criptografia e o kra poder fazer o login dele...

fui na página na documentação e não consegui pelo md5, sha1 ou sha256

http://book.cakephp.org/2.0/en/core-utility-libraries/security.html

brunosinister

unread,
Sep 24, 2012, 9:42:17 PM9/24/12
to cakep...@googlegroups.com
Então Rafael,

O cake usa criptografia + secure salt e critpata tudo ... como a senha é criptografada não há como retornar essa criptografia.

Gere uma nova senha aleatório para o usuário mande para ele por email e atualize a senha no banco. obviamente criptografando com o AuthComponent::password();

Espero ter ajudado.

Bruno Rodrigues de Araujo.


--
--
CakePHP Tuga (cakephp-pt)
 
Utilize http://bin.cakephp.org para códigos
Cookbook: http://book.cakephp.org
 
Website do CakePHP: http://cakephp.org/
Website do grupo: http://groups.google.com/group/cakephp-pt?hl=pt-PT
---
Recebeu esta mensagem porque está inscrito no grupo "CakePHP Tuga" dos Grupos do Google.
 
Para publicar uma mensagem neste grupo, envie um e-mail para cakep...@googlegroups.com.
Para anular a inscrição neste grupo, envie um e-mail para cakephp-pt+...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/cakephp-pt?hl=pt-PT.
 
 

Carliton Queiroz

unread,
Sep 24, 2012, 9:56:27 PM9/24/12
to cakep...@googlegroups.com
Ele usa três tipos (sha1/sha256/md5).
Se nenhum tipo for informado, ele utiliza o sha1



lib/Cake/Utility/Security.php

/**
* Create a hash from string using given method.
* Fallback on next available method.
*
* @param string $string String to hash
* @param string $type Method to use (sha1/sha256/md5)
* @param boolean $salt If true, automatically appends the application's salt
* value to $string (Security.salt)
* @return string Hash
*/
public static function hash($string, $type = null, $salt = false) {
if ($salt) {
if (is_string($salt)) {
$string = $salt . $string;
} else {
$string = Configure::read('Security.salt') . $string;
}
}

if (empty($type)) {
$type = self::$hashType;
}
$type = strtolower($type);

if ($type == 'sha1' || $type == null) {
if (function_exists('sha1')) {
$return = sha1($string);
return $return;
}
$type = 'sha256';
}

if ($type == 'sha256' && function_exists('mhash')) {
return bin2hex(mhash(MHASH_SHA256, $string));
}

if (function_exists('hash')) {
return hash($type, $string);
}
return md5($string);
} 

Rafael Lazarine

unread,
Sep 25, 2012, 6:26:01 PM9/25/12
to cakep...@googlegroups.com
então bruno, quando eu faço cadastro e ele gera o hash que coloquei no beforeSave, exemplo:

senha 12345 = 0a7ca85017a09e0c1f8b899f57698c8120dc32d1

ae quando vai redefinir a senha eu uso no controller AuthComponent::password(12345)  (fiz isso só para ver se ele gerava a mesma senha que gerei pelo beforeSave)

e ele me gera o hash -> 8e051725f4a99411b2dfa4616d6d55f6f117c1b0

eu consigo pegar os números aleatórios que eu gero e fazer o hash e atualizar o banco de dados, só que esse hash me parece que não é o mesmo que é gerado quando faço cadastro...

abs!

Rafael Lazarine

unread,
Sep 25, 2012, 6:29:06 PM9/25/12
to cakep...@googlegroups.com
eu tentei colocar:

Security::hash(12345, 'sha1', true); ou Security::hash(12345);

ele não gera o mesmo hash que no beforeSave... aff

Vinícius Arantes

unread,
Sep 25, 2012, 6:39:43 PM9/25/12
to cakep...@googlegroups.com
cara..
o cake concatena o security.salt com a senha informada para gerar o hash com o beforeSave

da uma olhada na api
[]s

2012/9/25 Rafael Lazarine <rafael...@gmail.com>
--

Rafael Lazarine

unread,
Sep 25, 2012, 9:15:52 PM9/25/12
to cakep...@googlegroups.com
então, de acordo com a API ele usa este método é definido em Cake/Controller/Component/AuthComponent.php na linha 687


public static function password($password) {
        return Security::hash($password, null, true);
    }

no controller coloquei:

Security::hash(12345, null, true);

ele continua gerando a senha diferente do beforeSave... sendo as 2 coloquei a senha 12345

a senha do beforeSave me retorna -> 0a7ca85017a09e0c1f8b899f57698c8120dc32d1

a senha do hash do controller me retorna-> 8e051725f4a99411b2dfa4616d6d55f6f117c1b0


já não sei oq faço.. aff

Rafael Lazarine

unread,
Sep 25, 2012, 9:33:29 PM9/25/12
to cakep...@googlegroups.com
já usei essas 4 formas:

AuthComponent::password(12345);


Security::hash(12345, 'sha1', true);

Security::hash(12345, 'md5', true);

Security::hash(12345, 'sha256', true);


o 1ª e o segundo geram o mesmo hash e os demais geram hash diferentes, mas todos diferentes do hash gerado pelo beforeSave ...

só queria gerar o mesmo hash q o beforeSave gera para o kra poder redefinir a senha dele e fazer o login de boa.... =[


Em terça-feira, 25 de setembro de 2012 19h40min26s UTC-3, vinicius.big escreveu:

Rafael Lazarine

unread,
Sep 25, 2012, 10:21:34 PM9/25/12
to cakep...@googlegroups.com
Problema resolvido, era o seguinte:

quando salvava no banco eu usava no controller:

             $this->Model->create();
            $this->Model->id =  $id;
            $this->Model->saveField('senha', $senha_banco_criptografada);

sendo que essa variável $senha_banco_criptografada eu usava os hashs citados acima ae ele passava no Model antes de salvar e caia no filho da mãe do beforeSave, ou seja, ele criptografava 2x, eu só tirei o hash da variável e ele gravava no banco apenas com o hash do beforeSave...


mt obrigado a todos pela paciência!...

boa noite a todos! *__*
Reply all
Reply to author
Forward
0 new messages