Hola amigos! Tiempo que no pasaba por aquí... Me gustaría saber su opinión sobre el resultado de este cifrado y que tan efectivo lo ven. Gracias de ante mano
<?php
function generarCodigo($longitud) {
$key = '';
$pattern = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$max = strlen($pattern)-1;
for($i=0;$i < $longitud;$i++) $key .= $pattern{mt_rand(0,$max)};
return $key;
}
$plaintext = 'Hola Mundo';
$password = generarCodigo(32);
$method = 'aes-256-cbc';
$key = password_hash($password, PASSWORD_BCRYPT, ['cost' => 12]);
//echo "Key:" . $key . "<br>";
$iv = rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9);
$encrypted = base64_encode(openssl_encrypt($plaintext, $method, $key, OPENSSL_RAW_DATA, $iv));
$decrypted = openssl_decrypt(base64_decode($encrypted), $method, $key, OPENSSL_RAW_DATA, $iv);
echo 'decrypted to: ' . $decrypted . "<br>";
echo $encrypted ."<br>";
es aes 256, es seguro... es lo que le llaman "grado militar" (y el que usa https por defecto)
Cita de: engel lex en 7 Abril 2018, 19:08 PM
es aes 256, es seguro... es lo que le llaman "grado militar" (y el que usa https por defecto)
Entonces, ese script si genera un cifrado seguro?
Gracias por responder! ;D
si, aunque hay que asegurar que el IV es seguro (aunque ese metodo debería bastar para aplicación general) y haces un paso extra que es hashear la pass en BCRYPT, no es necesario, pero si ayuda mucho a reforzar el largo de la contraseña y dificultad la fuerza bruta (aunque si no salvas el hash, te quedas sin key, ya que esa función teóricamente debería producir un salt diferente cada vez para la misma key)
Es como dice Engel, el AES es la polla.
https://www.boxcryptor.com/es/encryption/