elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  [Resuelto] alternativa a hash_pbkdf2 de PHP en javascript?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto] alternativa a hash_pbkdf2 de PHP en javascript?  (Leído 740 veces)
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.647

🏴 Libertad!!!!!


Ver Perfil WWW
[Resuelto] alternativa a hash_pbkdf2 de PHP en javascript?
« en: 3 Agosto 2022, 17:29 pm »

Hola tengo una pequeña duda de que alternativa utilizar a la función hash_pbkdf2 de PHP en javascript.

Ejemplo en PHP

Código
  1. <?php
  2. $salt = hex2bin("0123456789ABCDEF0123456789ABCDEF");
  3. $secret = hash_pbkdf2("sha512","secret",$salt,200000,0,false);
  4. echo "$secret\n";
  5. ?>
  6.  

Salida:
Código:
b14e5cb8d8ab9cabd2374a6d7a3dc6c1e8c2426fea3aaee98739d39c7e98661848fa22dc08e8734790fc4f88a007bd1a6e38ee4f70c7d3823bae8b848a9cedfa

Ya intente utilizar WebCrypto API y tambien CryptoJS y ninguno produce el mismo resultado, tal vez estoy haciendo las cosas mal no lo se, pero no mas no doy con la solucion

Código
  1. function test() {
  2. salt = hexToBytes("0123456789ABCDEF0123456789ABCDEF");
  3. password = "secret"
  4. secret = CryptoJS.PBKDF2(CryptoJS.enc.Utf8.parse(password), CryptoJS.enc.Utf8.parse(salt), { keySize: 512 / 32, iterations: 200000, hasher: CryptoJS.algo.SHA512});
  5. console.log(secret);
  6. }

Salida
Código:
4e334679d8a7368e0ed0d0699f164317931f4bf227c45989ed59b3ad2424bbe8b056298c0d56e08c810ce4e1ad7e34ab067ab1e9ee47a9ee69ab7ab3351ea126

Adicional a esto tengo el problema del Rendimiento en PHP originalmente tenia Un millon de Iteraciones y en PHP solo tardaba un segundo, pero estas funciones de JS tardaban mas de 2 minutos.

Saludos!


« Última modificación: 5 Agosto 2022, 02:03 am por AlbertoBSD » En línea

Publickey: 03b8b1bf1830c8d407870001ec0e7badb7a6632255fb0051284b14f53791bd6087
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.463


I'm fourth.


Ver Perfil WWW
Re: alternativa a hash_pbkdf2 de PHP en javascript?
« Respuesta #1 en: 3 Agosto 2022, 19:28 pm »

Es porque estás utilizando UTF8 para parsear el salt. Tienes que usar el encoder hexadecimal y sin tener que utilizar la función esa de hexToBytes.

Código
  1. CryptoJS.enc.Hex.parse

A mi me ha funcionado bien desde node:

Código
  1. crypto.pbkdf2Sync('secret', Buffer.from('0123456789ABCDEF0123456789ABCDEF', 'hex'), 200000, 512, 'sha512').toString('hex');

Código:
'b14e5cb8d8ab9cabd2374a6d7a3dc6c1e8c2426fea3aaee98739d39c7e98661848fa22dc08e8734790fc4f88a007bd1a6e38ee4f70c7d3823bae8b848a9cedfa'


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.647

🏴 Libertad!!!!!


Ver Perfil WWW
Re: alternativa a hash_pbkdf2 de PHP en javascript?
« Respuesta #2 en: 4 Agosto 2022, 00:09 am »

uff, muchas gracias MinusFour  ;-), en node tienes Tambien el problema del rendimiento que menciono?

Por que en el navegador tarda bastante, lo acabo de medir y tarda 15 segundos cuando la funcion en PHP tarda menos de un segundo con las 200 mil iteraciones.

Cuando lo tenia con Un millon de iteraciones en PHP tarda cerca de un segundo en mi laptop y en el navegador tarda cerca de 2 minutos.

Saludos!
« Última modificación: 4 Agosto 2022, 01:30 am por AlbertoBSD » En línea

Publickey: 03b8b1bf1830c8d407870001ec0e7badb7a6632255fb0051284b14f53791bd6087
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.463


I'm fourth.


Ver Perfil WWW
Re: alternativa a hash_pbkdf2 de PHP en javascript?
« Respuesta #3 en: 4 Agosto 2022, 02:36 am »

uff, muchas gracias MinusFour  ;-), en node tienes Tambien el problema del rendimiento que menciono?

Por que en el navegador tarda bastante, lo acabo de medir y tarda 15 segundos cuando la funcion en PHP tarda menos de un segundo con las 200 mil iteraciones.

Cuando lo tenia con Un millon de iteraciones en PHP tarda cerca de un segundo en mi laptop y en el navegador tarda cerca de 2 minutos.

Saludos!

Yo no tengo tanto problema con NodeJS, pero el resultado en definitiva no es inmediato.
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.647

🏴 Libertad!!!!!


Ver Perfil WWW
Re: alternativa a hash_pbkdf2 de PHP en javascript?
« Respuesta #4 en: 4 Agosto 2022, 05:32 am »

Va, se que no es inmediato, pero vamos que en el navegador tarde de cerca de 50 veces mas tiempo, se me hace excesivo, ahora Tambien tendre que probar cuanto tarda un smartphone de gama media. para limitarlo a unos 3 segundos, me imagino que tendré que degradar la seguridad limitando el numero de iteraciones a 50mil o algun numero mas bajo.

Saludos y de nuevo muchas gracias.
En línea

Publickey: 03b8b1bf1830c8d407870001ec0e7badb7a6632255fb0051284b14f53791bd6087
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Alternativa al setinterval o sleep en javascript
Desarrollo Web
WHK 0 2,969 Último mensaje 6 Diciembre 2011, 14:02 pm
por WHK
[resuelto] Alternativa a Damn Vulnerable Linux? (DVL)
Bugs y Exploits
Mad Antrax 2 2,973 Último mensaje 17 Julio 2015, 12:27 pm
por cuentanegra1990
[Resuelto] Enviar texto a una url con javascript « 1 2 »
Desarrollo Web
Kaxperday 13 5,793 Último mensaje 20 Octubre 2015, 13:49 pm
por Kaxperday
[Resuelto] pasar 2 valores por javascript
Desarrollo Web
tecasoft 7 2,183 Último mensaje 24 Octubre 2015, 03:55 am
por tecasoft
[Resuelto]: Alternativa a una solución de escapar comillas simples y dobles « 1 2 »
Desarrollo Web
Leguim 16 5,299 Último mensaje 1 Agosto 2020, 01:14 am
por WHK
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines