diff --git a/credenciales.enc b/credenciales.enc
deleted file mode 100644
index 6b4676e..0000000
--- a/credenciales.enc
+++ /dev/null
@@ -1 +0,0 @@
-Salted__����|R��R�Jͅ�7"�
B��_��Ζ��̀^��-;W�
��̧ �<\�F�I;�Z���f�G'|�K���
\ No newline at end of file
diff --git a/desinstalar-subir.sh b/desinstalar-subir.sh
index bc7d1e6..50521b8 100755
--- a/desinstalar-subir.sh
+++ b/desinstalar-subir.sh
@@ -2,10 +2,31 @@
 
 echo "🧹 Desinstalando git subir..."
 
-# Eliminar binario
-rm -f "$HOME/.local/bin/git-subir"
+BIN="$HOME/.local/bin/git-subir"
+CONFIG="$HOME/.config/git-subir.conf"
 
-# Eliminar credenciales y config
-rm -rf "$HOME/.config/git-subir"
+# Eliminar script
+if [[ -f "$BIN" ]]; then
+    rm "$BIN"
+    echo "✅ Script eliminado: $BIN"
+else
+    echo "⚠️ Script no encontrado en $BIN"
+fi
 
-echo "✅ Desinstalación completa."
+# Eliminar alias
+if git config --global --get alias.subir >/dev/null; then
+    git config --global --unset alias.subir
+    echo "✅ Alias 'git subir' eliminado"
+else
+    echo "⚠️ Alias 'git subir' no estaba configurado"
+fi
+
+# Eliminar configuración
+if [[ -f "$CONFIG" ]]; then
+    rm "$CONFIG"
+    echo "✅ Configuración eliminada: $CONFIG"
+else
+    echo "⚠️ Archivo de configuración no encontrado en $CONFIG"
+fi
+
+echo "🎉 Desinstalación completa."
diff --git a/instalar-subir.sh b/instalar-subir.sh
index 82ff037..fbba608 100755
--- a/instalar-subir.sh
+++ b/instalar-subir.sh
@@ -1,36 +1,70 @@
 #!/bin/bash
-# =========================================================
-# Script: git-subir.sh
-# Autor: Nahuel (adaptado con QA)
-# Descripción: Automatiza commits y pushes a Gitea con
-#              soporte de credenciales cifradas.
-# =========================================================
+
+echo "🚀 Instalando comando git subir..."
 
 CONFIG="$HOME/.config/git-subir.conf"
+BIN="$HOME/.local/bin/git-subir"
 
-# Cargar configuración si existe
-if [[ -f "$CONFIG" ]]; then
-    source "$CONFIG"
+mkdir -p "$(dirname "$CONFIG")"
+mkdir -p "$(dirname "$BIN")"
+
+# Solicitar credenciales
+read -p "👤 Usuario de Gitea: " usuario
+read -s -p "🔑 Token o contraseña: " token
+echo ""
+read -p "🌐 URL base de la API de Gitea: " url
+
+# Validar autenticación
+resp=$(curl -s -u "$usuario:$token" "$url/api/v1/user")
+if echo "$resp" | grep -q "\"login\":\"$usuario\""; then
+    echo "✅ Autenticación exitosa con $url/api/v1/user"
+else
+    echo "❌ Falló la autenticación. Abortando."
+    exit 1
 fi
 
+# Cifrado opcional
+read -p "🔐 ¿Querés cifrar las credenciales? (s/n): " cifrar
+if [[ "$cifrar" == "s" ]]; then
+    read -s -p "🔑 Contraseña para cifrado: " pass
+    echo ""
+    salt=$(openssl rand -hex 16)
+    cred="$usuario:$token"
+    cred_cifrada=$(echo -n "$cred" | openssl enc -aes-256-cbc -a -pbkdf2 -salt -pass pass:"$pass")
+else
+    cred_cifrada="$usuario:$token"
+    salt=""
+fi
+
+# Guardar configuración
+cat > "$CONFIG" <<EOF
+URL=$url
+CRED=$cred_cifrada
+SALT=$salt
+EOF
+
+# Generar script git-subir con commit interactivo
+cat > "$BIN" <<'EOF'
+#!/bin/bash
+CONFIG="$HOME/.config/git-subir.conf"
+mkdir -p "$(dirname "$CONFIG")"
+source "$CONFIG"
+
 guardar_config() {
-    mkdir -p "$(dirname "$CONFIG")"
-    cat > "$CONFIG" <<EOF
+    cat > "$CONFIG" <<EOF2
 URL=$URL
 CRED=$CRED
-EOF
+SALT=$SALT
+EOF2
 }
 
-# ---------------------------------------------------------
 # Reconfigurar credenciales
-# ---------------------------------------------------------
 if [[ "$1" == "--reconfigurar" ]]; then
     echo "🔄 Reconfigurando credenciales..."
     read -p "👤 Usuario de Gitea: " usuario
     read -s -p "🔑 Token o contraseña: " token
     echo ""
     read -p "🌐 URL base de la API de Gitea: " URL
-
     resp=$(curl -s -u "$usuario:$token" "$URL/api/v1/user")
     if echo "$resp" | grep -q "\"login\":\"$usuario\""; then
         echo "✅ Autenticación exitosa con $URL/api/v1/user"
@@ -38,75 +72,61 @@ if [[ "$1" == "--reconfigurar" ]]; then
         echo "❌ Falló la autenticación. Abortando."
         exit 1
     fi
-
     read -p "🔐 ¿Querés cifrar las credenciales? (s/n): " cifrar
     if [[ "$cifrar" == "s" ]]; then
         read -s -p "🔑 Contraseña para cifrado: " pass
         echo ""
-        CRED=$(echo -n "$usuario:$token" | openssl enc -aes-256-cbc -a -pbkdf2 -pass pass:"$pass")
+        SALT=$(openssl rand -hex 16)
+        CRED=$(echo -n "$usuario:$token" | openssl enc -aes-256-cbc -a -pbkdf2 -salt -pass pass:"$pass")
     else
         CRED="$usuario:$token"
+        SALT=""
     fi
-
     guardar_config
     echo "✅ Reconfiguración completa."
     exit 0
 fi
 
-# ---------------------------------------------------------
-# Cambiar la clave de cifrado
-# ---------------------------------------------------------
+# Cambiar solo la clave de cifrado
 if [[ "$1" == "--cambiar-clave" ]]; then
     echo "🔐 Cambiando contraseña de cifrado..."
-    if [[ -z "$CRED" ]]; then
-        echo "⚠️ No hay credenciales guardadas. Abortando."
+    if [[ -z "$SALT" ]]; then
+        echo "⚠️ Las credenciales no están cifradas. No se puede cambiar la clave."
         exit 1
     fi
-
     read -s -p "🔑 Contraseña actual: " oldpass
     echo ""
-    cred_descifrada=$(echo "$CRED" | openssl enc -aes-256-cbc -a -d -pbkdf2 -pass pass:"$oldpass" 2>/dev/null)
-
+    cred_descifrada=$(echo "$CRED" | openssl enc -aes-256-cbc -a -d -pbkdf2 -salt -pass pass:"$oldpass" 2>/dev/null)
     if [[ -z "$cred_descifrada" ]]; then
         echo "❌ Contraseña incorrecta. Abortando."
         exit 1
     fi
-
     read -s -p "🔑 Nueva contraseña: " newpass
     echo ""
-    CRED=$(echo -n "$cred_descifrada" | openssl enc -aes-256-cbc -a -pbkdf2 -pass pass:"$newpass")
-
+    SALT=$(openssl rand -hex 16)
+    CRED=$(echo -n "$cred_descifrada" | openssl enc -aes-256-cbc -a -pbkdf2 -salt -pass pass:"$newpass")
     guardar_config
     echo "✅ Contraseña de cifrado actualizada."
     exit 0
 fi
 
-# ---------------------------------------------------------
-# Descifrar credenciales si están cifradas
-# ---------------------------------------------------------
-if [[ "$CRED" =~ ^[A-Za-z0-9+/=]+$ ]]; then
+# Descifrar credenciales si es necesario
+if [[ -n "$SALT" ]]; then
     read -s -p "🔑 Contraseña para descifrado: " pass
     echo ""
-    descifrado=$(echo "$CRED" | openssl enc -aes-256-cbc -a -d -pbkdf2 -pass pass:"$pass" 2>/dev/null)
-    if [[ -n "$descifrado" ]]; then
-        CRED="$descifrado"
+    CRED=$(echo "$CRED" | openssl enc -aes-256-cbc -a -d -pbkdf2 -salt -pass pass:"$pass" 2>/dev/null)
+    if [[ -z "$CRED" ]]; then
+        echo "❌ Contraseña incorrecta. Abortando."
+        exit 1
     fi
 fi
 
 usuario=$(echo "$CRED" | cut -d: -f1)
 token=$(echo "$CRED" | cut -d: -f2)
 
-# Validar URL
-if [[ -z "$URL" ]]; then
-    echo "❌ No se encontró la URL de Gitea en la configuración."
-    exit 1
-fi
-
 echo "📤 Subiendo cambios como $usuario a $URL..."
 
-# ---------------------------------------------------------
 # Verificar si es repo git
-# ---------------------------------------------------------
 if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
     echo "📁 No estás en un repositorio git. Inicializando..."
     git init
@@ -114,38 +134,56 @@ if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
     git remote add origin "$remote_url"
 fi
 
-# ---------------------------------------------------------
 # Detectar cambios sin commitear
-# ---------------------------------------------------------
 if [[ -n "$(git status --porcelain)" ]]; then
     echo "📦 Hay cambios sin commitear."
-    read -p "❓ ¿Querés escribir un mensaje de commit? (s/n): " respuesta
+    read -p "¿Querés escribir el mensaje de commit? (s/n): " respuesta
     if [[ "$respuesta" == "s" ]]; then
-        mensaje=""
-        while [[ -z "$mensaje" ]]; do
-            read -p "📝 Ingresá el mensaje de commit: " mensaje
-        done
-        git add -A
-        git commit -m "$mensaje"
+        read -p "📝 Ingresá el mensaje de commit: " mensaje
     else
-        git add -A
-        git commit -m "Auto-commit"
-        echo "✅ Commit automático generado."
+        mensaje="Commit automático desde git-subir"
     fi
+    git add -A
+    git commit -m "$mensaje"
 else
     echo "✅ No hay cambios pendientes. Continuando con el push..."
 fi
 
-# ---------------------------------------------------------
-# Push con verificación de upstream
-# ---------------------------------------------------------
+# Verificar si la rama tiene upstream
 branch=$(git rev-parse --abbrev-ref HEAD)
 remote=$(git config --get branch.$branch.remote)
 
 if [[ -z "$remote" ]]; then
     echo "⚠️ La rama '$branch' no tiene remoto configurado."
     echo "👉 Ejecutando: git push --set-upstream origin $branch"
-    git push --set-upstream origin "$branch" || { echo "❌ Falló el push."; exit 1; }
+    git push --set-upstream origin "$branch"
 else
-    git push || { echo "❌ Falló el push."; exit 1; }
+    git push
 fi
+EOF
+
+chmod +x "$BIN"
+
+# Validar PATH
+SHELL_RC="$HOME/.bashrc"
+[[ "$SHELL" == */zsh ]] && SHELL_RC="$HOME/.zshrc"
+grep -q "$HOME/.local/bin" <<< "$PATH" || echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$SHELL_RC"
+
+# Configurar alias
+git config --global alias.subir "!git-subir"
+
+echo "✅ Alias 'git subir' configurado."
+echo "👉 Ejecutá 'source $SHELL_RC' o reiniciá la terminal para aplicar el PATH."
+
+# Verificación final
+if command -v git-subir >/dev/null; then
+    echo "✅ El comando 'git-subir' está disponible."
+else
+    echo "⚠️ El comando 'git-subir' aún no está disponible."
+fi
+
+echo "🎉 Instalación completa."
+echo "🛠️ Opciones disponibles para el comando:"
+echo "   git subir                 # Ejecuta git push con autenticación"
+echo "   git subir --reconfigurar # Cambia usuario, token, URL y clave"
+echo "   git subir --cambiar-clave # Cambia solo la contraseña de cifrado"
