es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Encriptación AES con PHP

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en formato markdown.

Soy muy nuevo en PHP y ahora me he encontrado con la encryptación con PHP. He creado el archivo PHP para generar una clave usando AES y lo he hecho funcionar, pero ahora estoy muy atascado en la creación de un archivo PHP que haga lo siguiente:
* Almacene una clave generada
* Encripte los siguientes datos de texto sin formato: *Fido!hcteF^
* Desencripte los datos encriptados
* Salida de todos los siguientes a la página web:
la clave
los datos de texto sin formato
los datos encriptados
los datos desencriptados

Sé que tengo que agregar el siguiente código

La función de encriptación

función encriptarDatos($data, $key) {
// elimine la codificación base64 de nuestra clave para tener nuevamente la clave de 256 bits
$encryption_key = base64_decode($key);

// generar un IV
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length(& amp; # 39; aes-256-cbc & amp; # 39;));

// cifrar los datos utilizando el modo CBC AES 256, también utilizando la clave de cifrado y el IV.
$cifrado = openssl_encrypt($data, & amp; # 39; aes-256-cbc & amp; # 39 ;, $encryption_key, 0, $iv);

// El $iv se necesita junto con la clave para descifrar, así que manténgalo con nuestros datos cifrados utilizando un separador único (::)
return base64_encode($cifrado. & amp; # 39; :: & amp; # 39; . $iv);
}

y

La función de descifrado

función desencriptarDatos($data, $key) {

// elimine la codificación base64 de nuestra clave para tener nuevamente la clave de 256 bits
$encryption_key = base64_decode($key);

// divida los datos cifrados de nuestro IV – nuestro separador único utilizado fue & quot; :: & quot;
lista ($datos_cifrados, $iv) = explode (& amp; # 39; :: & amp; # 39 ;, base64_decode ($data), 2);

// use los datos cifrados, la clave y el IV para devolver los datos de texto sin formato
devolver openssl_decrypt($datos_cifrados, & # 39;aes-256-cbc & # 39;, $encryption_key, 0, $iv);
}

Gracias por cualquier ayuda, es muy apreciada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para almacenar una clave generada, puedes usar el siguiente código:

    $key = openssl_random_pseudo_bytes(32);
    $key_base64 = base64_encode($key);
    //guarda $key_base64 en un archivo o base de datos para uso futuro
    

    Para cifrar los datos de texto plano “Fido!hcteF^” utilizando la clave generada, puedes usar:

    $plaintext = "Fido!hcteF^";
    $ciphertext_base64 = encryptData($plaintext, $key_base64);
    

    Para descifrar los datos cifrados, puedes usar:

    $decrypted_text = decryptData($ciphertext_base64, $key_base64);
    

    Para imprimir todo lo siguiente en la página web, puedes usar el siguiente código:

    echo "Clave: " . $key_base64 . "<br>";
    echo "Texto plano: " . $plaintext . "<br>";
    echo "Texto cifrado: " . $ciphertext_base64 . "<br>";
    echo "Texto descifrado: " . $decrypted_text . "<br>";
    

    Ten en cuenta que tendrás que incluir las funciones encryptData() y decryptData() en tu archivo PHP para que este código funcione.

Comments are closed.