--- name: encrypt_file kind: function lang: bash domain: cybersecurity version: "1.0.0" purity: impure signature: "encrypt_file(mode: string, file: string) -> void" description: "Cifra o descifra un archivo usando AES-256-CBC con PBKDF2 (310.000 iteraciones) via openssl. La contraseña se lee de la variable de entorno ENCRYPT_PASSWORD o se solicita interactivamente. El archivo cifrado se guarda con extensión .enc; al descifrar se recupera el nombre original." tags: [bash, cybersecurity, encryption, aes256, openssl, crypto, pbkdf2, pendiente-usar] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: [] params: - name: mode desc: "operación a realizar: encrypt (cifrar) o decrypt (descifrar)" - name: file desc: "ruta al archivo a cifrar o descifrar" output: "genera el archivo cifrado (input.enc) o descifrado (input sin .enc, o input.dec) e imprime progreso a stdout" tested: false tests: [] test_file_path: "" file_path: "bash/functions/cybersecurity/encrypt_file.sh" source_repo: "https://gitea-dgg044oo04woo4ggcsws4gk0.organic-machine.com/egutierrez/DevLauncher.git" source_license: "MIT" source_file: "scripts/linux/ciberseguridad/utilidades/cifrar_archivo.sh" --- ## Ejemplo ```bash source bash/functions/cybersecurity/encrypt_file.sh # Cifrar (solicita contraseña interactivamente) encrypt_file encrypt documento.pdf # Descifrar encrypt_file decrypt documento.pdf.enc # Con contraseña via variable de entorno (no interactivo) ENCRYPT_PASSWORD="mi-secreto-seguro" encrypt_file encrypt datos.tar.gz ENCRYPT_PASSWORD="mi-secreto-seguro" encrypt_file decrypt datos.tar.gz.enc ``` ## Notas Usa `openssl enc -aes-256-cbc -pbkdf2 -iter 310000` — compatible con OpenSSL 1.1.1+. Las 310.000 iteraciones de PBKDF2 siguen las recomendaciones NIST para derivación de claves en 2024. La contraseña se limpia de memoria al terminar. Si el archivo de salida ya existe, la función falla silenciosamente (no sobrescribe por seguridad cuando se usa con ENCRYPT_PASSWORD).