---
name: generate_password
kind: function
lang: bash
domain: cybersecurity
version: "1.0.0"
purity: impure
signature: "generate_password(mode: string, length: int, count: int) -> void"
description: "Genera contraseñas seguras en cuatro modos: full (alfanumérico + símbolos, excluye caracteres ambiguos), alpha (solo alfanumérico), passphrase (palabras aleatorias unidas con guión) y pin (numérico). Calcula y muestra la entropía en bits para cada modo."
tags: [bash, cybersecurity, password, generator, entropy, security, urandom]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
params:
  - name: mode
    desc: "modo de generación: full (alfanumérico+símbolos, por defecto), alpha (solo letras y números), passphrase (palabras), pin (numérico)"
  - name: length
    desc: "longitud en caracteres para full/alpha/pin, o número de palabras para passphrase (por defecto: 16)"
  - name: count
    desc: "número de contraseñas a generar (por defecto: 1)"
output: "imprime las contraseñas generadas a stdout (una por línea) con información de entropía"
tested: false
tests: []
test_file_path: ""
file_path: "bash/functions/cybersecurity/generate_password.sh"
source_repo: "https://gitea-dgg044oo04woo4ggcsws4gk0.organic-machine.com/egutierrez/DevLauncher.git"
source_license: "MIT"
source_file: "scripts/linux/ciberseguridad/utilidades/generar_password.sh"
---

## Ejemplo

```bash
source bash/functions/cybersecurity/generate_password.sh

# Contraseña completa de 20 caracteres
generate_password full 20

# 5 contraseñas alfanuméricas de 16 caracteres
generate_password alpha 16 5

# Passphrase de 6 palabras
generate_password passphrase 6

# PIN de 8 dígitos
generate_password pin 8
```

## Notas

Usa `/dev/urandom` como fuente de aleatoriedad criptográficamente segura. El modo `full` excluye caracteres ambiguos (0, O, l, I, 1) para mejorar legibilidad. El modo `passphrase` requiere un diccionario del sistema (`/usr/share/dict/words` o similar). La entropía se calcula como log2(charset^length) en bits. Las contraseñas nunca se escriben a disco.
