Generar sal para OpenCart

Restablecer contraseña de OpenCart manualmente

Hoy vamos a ver cómo restablecer la contraseña de OpenCart (sistema de comercio electrónico en PHP) manualmente, directamente en la base de datos; generando el hash y la sal manualmente con una función creada por mí.

Función que genera sal y nueva contraseña

Aquí dejo el código, y la explicación la dejamos al final.

<?php
function token($length = 32) {
	// Create random token
	$string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
	
	$max = strlen($string) - 1;
	
	$token = '';
	
	for ($i = 0; $i < $length; $i++) {
		$token .= $string[mt_rand(0, $max)];
	}	
	
	return $token;
}

function generar_pass($passTextoPlano){
	$sal = token(9);
	$hash = sha1($sal . sha1($sal . sha1($passTextoPlano)));
	return [
		"sal" => $sal,
		"hash" => $hash,
	];
}

// Demostrar uso
$datosPass = generar_pass("hunter2");
$pass = $datosPass["hash"]; // Este va en el campo password
$sal = $datosPass["sal"]; // Este va en el campo salt
printf("La sal es %s y la pass es %s", $sal, $pass);

La función regresa un arreglo que tiene la sal y la contraseña, la forma de llamarla es pasarle la contraseña en texto plano.

Una vez que tengas la sal y la contraseña simplemente haz un update de tu tabla de la base de datos. En mi caso:

update oc_user set salt = "vpBBLdiEH", password = "993100efe6af8b0f1b5cb6371430f9a43cb83b27" where username = "parzibyte";

Mi tabla se llama oc_user porque al instalar OpenCart utilicé ese prefijo, en tu caso puede variar.

El algoritmo y la forma que usa OpenCart

Gracias a que OpenCart es open source podemos mirar cómo es que genera la sal y guarda los hashes.

En su código fuente implementa la obtención de una cadena aleatoria segura criptográficamente y luego usa sha1 para hashearla, concatenándola con la contraseña del usuario.

La generación de la sal es la siguiente:

Generar sal para OpenCart
Generar sal para OpenCart

Usa la función llamada token definida en helpers/general.php y la llama, obteniendo una cadena aleatoria de 9 dígitos.

Después la concatena y la hashea con SHA1:

Hashear contraseña de OpenCart con SHA1
Hashear contraseña de OpenCart con SHA1

Finalmente, en la base de datos guarda todo en la tabla user en los campos salt y password:

Ubicación de sal y contraseña de usuario en base de datos OpenCart
Ubicación de sal y contraseña de usuario en base de datos OpenCart

Sabiendo todo eso pudimos escribir una función que genera la sal y la contraseña para poder resetear la contraseña de un usuario manualmente en OpenCart.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *