Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created July 23, 2019 17:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/7b056e9ee18463ac600e7ba645a93521 to your computer and use it in GitHub Desktop.
Save parzibyte/7b056e9ee18463ac600e7ba645a93521 to your computer and use it in GitHub Desktop.
Cifrar un archivo con contraseña proporcionada por usuario https://parzibyte.me/blog
<?php
/**
* Cifrar un archivo con php-encryption; usando una contraseña
* en lugar de la clave
*
* https://parzibyte.me/blog
*
*/
require_once "vendor/autoload.php";
use Defuse\Crypto\Exception\EnvironmentIsBrokenException;
use Defuse\Crypto\Exception\IOException;
use Defuse\Crypto\Exception\WrongKeyOrModifiedCiphertextException;
use Defuse\Crypto\File;
$password = "hunter2";
// Cualquier archivo es válido
// El archivo que se va a cifrar
$rutaArchivoEntrada = __DIR__ . "/script.js";
// El archivo de salida; es decir, el que estará cifrado
$rutaArchivoSalida = __DIR__ . "/script.cifrado.js";
try {
File::encryptFileWithPassword($rutaArchivoEntrada, $rutaArchivoSalida, $password);
echo "Archivo $rutaArchivoEntrada cifrado dentro de $rutaArchivoSalida";
// Opcionalmente podrías eliminar el original:
# unlink($rutaArchivoEntrada);
# El manejo de excepciones es opcional ;)
} catch (IOException $e) {
echo "Error leyendo o escribiendo archivo. Verifica que el archivo de entrada exista y que tengas permiso de escritura";
} catch (EnvironmentIsBrokenException $e) {
echo "El entorno está roto. Normalmente es porque la plataforma actual no puede encriptar el archivo de una manera segura";
} catch (WrongKeyOrModifiedCiphertextException $e) {
echo "La clave es errónea o alguien la intentó modificar, cuidado";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment