PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

mhash> <mhash_get_hash_name
Last updated: Fri, 22 Aug 2008

view this page in

mhash_keygen_s2k

(PHP 4 >= 4.0.4, PHP 5)

mhash_keygen_s2kGenera una llave

Descripción

string mhash_keygen_s2k ( int $hash , string $contrasenya , string $sal , int $bytes )

Genera una llave de acuerdo con el hash , dada una contrasenya provista por el usuario.

Este es el algoritmo con sal S2K, tal y como se encuentra especificado en el documento OpenPGP (» RFC 2440).

Tenga en mente que las contraseñas entregadas por el usuario no son realmente apropiadas para ser usadas como llaves en algoritmos criptográficos, ya que los usuarios normalmente eligen llaves que pueden escribir con el teclado. Estas contreseñas usan solo 6 o 7 bits por caracter (o menos). Es bastante recomendable usar algún tipo de transformación (como esta función) sobre la llave entregada por el usuario.

Lista de parámetros

hash

El id del hash usado para crear la llave. Debe ser una de las constantes MHASH_XXX.

contrasenya

Contraseña entregada por el usuario.

sal

Debe ser diferente y suficientemente aleatoria para cada llave que genere para crear diferentes llaves. La sal debe conocerse cuando chequee las llaves, de modo que es una buena idea adicionarle la llave al final. La sal tiene un tamaño fijo de 8 bytes y será rellenada con ceros si usted suple menos bytes.

bytes

La longitud de la llave, en bytes.

Valores retornados

Devuelve la llave generada como una cadena, o FALSE en caso de error.



add a note add a note User Contributed Notes
mhash_keygen_s2k
gmic
14-Mar-2007 08:42
Correction to ray ferguson post,

As said in the doc : "mhash_keygen_s2k generates a key that is bytes long, from a user given password and use the specified hash algorithm to create the key." if It wasn't clear to anyone.

The non mhash function is good as long you do not need a key longer than native MD5 hash (16 bytes)  it wont give you more.

So the non mhash function work OK but they ARE NOT the same thing.

Just try ray ferguson exemple asking for a 32 bytes key.

Returning a substring longer than the packed 16 bytes string won't add anything to the string. Salted S2K algorithm does add to the key.  So better use mhash lib or create something more alike the RFC 2440 specs.

I know the post is late on regard to Ray's post but if it can help someone not waisting time like me.
php_at_share-foo.com
17-Jul-2003 08:18
// given random 8 bits of salt and a clear text password

$clear_pw = "p4ssw0rd" ;
$rand8bites4salt = substr(pack("h*", md5(mt_rand())) , 0, 8);

// This

mhash_keygen_s2k(MHASH_MD5, $clear_pw, $rand8bites4salt, 4) ;

//is the same as this

function myhash_keyge_s2k($pass, $salt, $bytes ){
      return substr(pack("H*", md5($salt . $pass)), 0, $bytes);
}

myhash_keyge_s2k($clear_pw, $rand8bites4salt, 4);

// But the latter doesn't require mhash libs.

// -ray ferguson

mhash> <mhash_get_hash_name
Last updated: Fri, 22 Aug 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites