Carácter alfanumérico: definición, uso criptográfico, seguridad

Carácter alfanumérico: definición, uso criptográfico, seguridad

Sesenta y dos. Ese es el número total de símbolos distintos disponibles cuando alguien dice "use solo caracteres alfanuméricos". Veintiséis mayúsculas, veintiséis minúsculas, diez dígitos. Si se elimina la distinción entre mayúsculas y minúsculas, el número se reduce a treinta y seis. Ambos números son importantes, porque casi todos los identificadores digitales que has escrito alguna vez —una dirección de billetera, una contraseña de Wi-Fi, un hash de transacción, un token de GitHub— se construyen a partir de un subconjunto seleccionado de esos sesenta y dos símbolos.

La elección del subconjunto y sus razones es la parte que la mayoría de las explicaciones omiten. Es también la parte que vincula la definición enciclopédica de un carácter alfanumérico con la seguridad práctica de su billetera de criptomonedas. Este artículo analiza el recuento, el estándar que lo respalda, la forma en que la criptografía moderna selecciona subconjuntos y lo que la autoridad nacional estadounidense en materia de contraseñas dice al respecto. Algunas de estas directrices han cambiado de maneras que la mayoría de los consejos de seguridad aún no han incorporado.

¿Qué es un carácter alfanumérico? Definición y recuento.

Comencemos con la definición. Un carácter alfanumérico es cualquier letra de la A a la Z (en mayúsculas y minúsculas) o cualquier dígito decimal del 0 al 9. Eso es todo. A partir de ahí, la aritmética es obvia: veintiséis letras por mayúscula más diez dígitos dan sesenta y dos caracteres distintos con distinción entre mayúsculas y minúsculas, y treinta y seis sin ella. Todo lo demás es "especial". La puntuación, los espacios en blanco, los símbolos matemáticos, las letras acentuadas, los emojis: ninguno de ellos se considera alfanumérico.

Los ingenieros suelen cumplir la definición mediante una de dos abreviaturas. Las herramientas POSIX como grep, sed y awk reconocen `[:alnum:]`, que coincide con los sesenta y dos caracteres anteriores. La mayoría de las variantes modernas de expresiones regulares (Python, JavaScript, Java, PCRE) utilizan `\w` en su lugar. El problema con `\w` es que introduce el guion bajo de forma encubierta. El guion bajo no es formalmente alfanumérico. La mayoría de las sintaxis de programación lo tratan como honorífico, razón por la cual el prefijo de clave de Stripe `sk_live_` y el prefijo de clave de AWS `AKIA` mezclan guiones bajos y letras mayúsculas con dígitos sin que nadie se inmute.

¿De dónde surgió el término? De las tarjetas perforadas, nada menos. En la década de 1930, los equipos de tabulación de IBM necesitaban una sola palabra para los códigos que combinaban letras y números, y "alfanumérico" se popularizó. Con la llegada de la IBM 1401 a principios de la década de 1960, la palabra ya era vocabulario estándar en la informática empresarial. Esta distinción tenía consecuencias prácticas: un campo declarado como "alfanumérico" aceptaba cualquier letra o dígito; un campo exclusivamente numérico rechazaba el alfabeto por completo. A partir de ahí, la palabra se extendió a las matrículas de los coches, los códigos IBAN bancarios, las reglas mnemotécnicas de los teclados telefónicos, los códigos SKU de los productos y muchos otros lugares.

La distinción entre mayúsculas y minúsculas es más importante de lo que parece. La entropía de las contraseñas se duplica cuando se permiten mayúsculas. Las direcciones Base58 de Bitcoin conservan ambas mayúsculas intencionadamente. Bech32 las ignora deliberadamente. Cada una de estas decisiones implica un equilibrio entre expresividad y error humano. Una mala elección puede provocar pérdidas económicas por errores tipográficos.

Carácter alfanumérico

De ASCII a Unicode: una breve historia técnica

El sistema alfanumérico es hoy en día un vestigio de una guerra de estándares que duró sesenta años. La mayoría de los usuarios quedaron atrapados en algún punto intermedio y ni siquiera se dieron cuenta.

ASCII fue el primero. Se lanzó en 1963, gracias a la Asociación Estadounidense de Estándares, y se formalizó cinco años después como ANSI X3.4-1968. Le siguieron dos revisiones: una en 1977 y otra en 1986. La versión de 1968 asignaba el byte 65 a la letra A mayúscula, el 97 a la a minúscula y los dígitos del 0 al 9 del 48 al 57. Abre tu editor ahora mismo: el byte 'A' sigue siendo 65. Nada ha cambiado en sesenta años.

Durante aproximadamente cuatro décadas, el conjunto alfanumérico ASCII fue el único. Luego llegó la web global. Siete bits dejaron de ser suficientes. Los fallos eran terribles: correos electrónicos ilegibles, bases de datos dañadas, sitios web japoneses que funcionaban perfectamente en Tokio pero parecían muros de signos de interrogación en un portátil estadounidense. Unicode llegó en 1991 con una ambición desmesurada: asignar un número único a cada carácter de cada escritura jamás escrita. UTF-8 le siguió en 1992 como la codificación que realmente transmitió Unicode a través de las redes convencionales. Su secreto residía en la retrocompatibilidad: los primeros 128 puntos de código de UTF-8 son exactamente los bytes ASCII originales de 1968. El texto en inglés enviado antes de 1991 siguió funcionando para siempre.

El cambio se produjo en diciembre de 2007. Ese mes, las estadísticas públicas de rastreo web confirmaron que UTF-8 superaba a ASCII como la codificación más común en línea. A partir de entonces, el término "alfanumérico" dejó de referirse exclusivamente a los sesenta y dos símbolos ASCII. Actualmente, Unicode cataloga bloques alfanuméricos para los alfabetos cirílico, griego, árabe, hebreo y CJK. Cada alfabeto cuenta con sus propias letras y dígitos.

En la práctica, sin embargo, el software que debe cruzar fronteras sigue utilizando por defecto el subconjunto ASCII original: letras latinas de la A a la Z y números arábigos del 0 al 9. Nada más. La razón es simple: todos los teclados generan ASCII, todas las bases de datos lo aceptan y todos los motores de expresiones regulares lo reconocen. Si se sale de este rango, se heredan errores de codificación, caracteres similares y los ataques de phishing que mencionaré más adelante.

Clase Miembros Contar Abreviatura de expresiones regulares Ejemplo
Alfabético A–Z, a–z 52 `[A-Za-z]` Palabra en inglés sencillo
Numérico 0–9 10 `[0-9]` o `\d` Un año, un código postal
Alfanumérico A–Z, a–z, 0–9 62 `[A-Za-z0-9]` o `[:alnum:]` Clave API, SKU
Especial/simbólico `!@#$%^&*()_+-=[]{};:'"\ ,.<>/?` ~33 (ASCII) `[^A-Za-z0-9]` Modificador de contraseña

Caracteres alfanuméricos en criptografía: direcciones, hashes y semillas.

Aquí está la parte que la mayoría de las explicaciones genéricas omiten. Los sistemas de criptomonedas nunca utilizan el conjunto completo de sesenta y dos caracteres alfanuméricos. Seleccionan subconjuntos cuidadosamente elegidos. Cada uno es un compromiso de ingeniería documentado, no una cuestión estética arbitraria.

Primero Bitcoin. Una dirección Bitcoin antigua (una que comienza con 1 o 3) está codificada en Base58. El alfabeto fue diseñado a mano por Satoshi Nakamoto. Receta: toma el conjunto alfanumérico de sesenta y dos caracteres, elimina cuatro miembros. Se eliminan el dígito cero, la O mayúscula, la I mayúscula y la l minúscula. ¿Por qué esos cuatro? Escríbelos en un Post-it con mala letra. Aléjate. Vuelve en cinco minutos. Intenta distinguirlos. No puedes. Ese es el problema que Base58 se creó para resolver. Quedan cincuenta y ocho caracteres. Una dirección antigua típica termina teniendo entre veintiséis y treinta y cinco símbolos de largo, lo suficientemente corta como para copiarla a mano si realmente es necesario.

SegWit se activó en agosto de 2017. Con él llegó un segundo formato de dirección de Bitcoin: Bech32, definido en BIP-173. Bech32 presenta diferencias. La distinción entre mayúsculas y minúsculas desaparece por completo: todas las direcciones están en minúsculas. Se omiten cuatro caracteres: el dígito 1, además de b, i y o. Las treinta y dos letras y dígitos restantes incluyen una suma de verificación integrada. Esta suma de verificación detecta automáticamente casi cualquier error tipográfico de un solo carácter. Taproot, en funcionamiento desde noviembre de 2021, perfeccionó el formato a Bech32m (BIP-350) después de que los investigadores encontraran un fallo en un caso límite en el cálculo original.

Ethereum optó por una tercera ruta: usar hexadecimal. Una dirección Ethereum es `0x` seguido de exactamente cuarenta caracteres hexadecimales; cuarenta y dos caracteres en total. El hexadecimal reduce los caracteres alfanuméricos a dieciséis miembros: los dígitos del 0 al 9 y las letras de la a a la f. En 2015, la elección parecía limpia. Sin embargo, después de años de usuarios intentando descifrar los bloques hexadecimales en MetaMask, el resultado es poco atractivo. La solución fue EIP-55. Se convierten selectivamente a mayúsculas ciertas letras siguiendo un patrón derivado de un hash Keccak-256 de la dirección en minúsculas. El resultado es una detección de errores tipográficos gratuita. EIP-55 detecta errores tipográficos con una fiabilidad cercana al 99,975 %. La tasa de fallos se sitúa en torno al 0,0247 %. Pequeña, pero no nula.

Los hashes son el caso más simple. El resultado de un hash SHA-256 es de 256 bits, representados por 64 caracteres hexadecimales. El Keccak-256 de Ethereum produce un resultado de la misma longitud. Un ID de transacción de Bitcoin (txid) es el hash SHA-256 de la transacción en sí, por lo que un txid también consta de 64 caracteres hexadecimales alfanuméricos. Aunque parezcan complejos en un explorador de bloques, son puramente alfanuméricos.

Las frases semilla rompen el patrón. La recuperación de billetera BIP-39 es el único caso en el que las criptomonedas se salen del ámbito alfanumérico y vuelven al territorio puramente alfabético. El estándar codifica 128 o 256 bits de entropía como doce o veinticuatro palabras en inglés extraídas de una lista fija de 2048 palabras. Cada palabra consta únicamente de letras minúsculas; no se permiten dígitos ni mayúsculas/minúsculas. ¿Por qué? Porque el objetivo del diseño es una persona que escribe palabras en papel a las 3 de la mañana después de que se le agote la batería del teléfono, y los dígitos introducen una ambigüedad que las letras no generan.

Identificador Conjunto de caracteres Longitud Ejemplo (truncado)
Dirección heredada de Bitcoin Base58 (58 caracteres, sin 0/O/I/l) 26–35 `1A1zP1eP5QGefi2…`
Bitcoin Bech32 (SegWit) 32 minúsculas, sin 1/b/i/o ~42 `bc1qar0srrr7xfk…`
Dirección Ethereum hexadecimal (0–9, a–f) + `0x` 42 `0xde0B295669a91…`
SHA-256 / txid maleficio 64 `e3b0c44298fc1c1…`
BIP-39 palabra solo de la a a la z 3–8 por palabra `abandonar la capacidad capaz…`

Cada subconjunto es una pieza de diseño centrado en el ser humano que se esconde dentro de un sistema profundamente técnico.

Contraseñas alfanuméricas: lo que realmente dice el NIST en 2024

La mayoría de los consejos sobre contraseñas que se encuentran en internet tienen varios años de antigüedad. Usar mayúsculas y minúsculas, añadir números, incluir al menos un carácter especial, cambiarla cada noventa días: esas reglas fueron la norma durante dos décadas. El Instituto Nacional de Estándares y Tecnología de Estados Unidos las abandonó oficialmente.

La publicación especial 800-63B del NIST, la autoridad federal en materia de identidad digital, finalizó la Revisión 4 en septiembre de 2024. La nueva guía destaca por la cantidad de cambios que introduce. La recomendación de longitud mínima se elevó a quince caracteres para la autenticación de un solo factor. La instrucción sobre las reglas de composición de caracteres se formula como una prohibición: los servicios no deberán requerir clases de caracteres específicas. La caducidad periódica de contraseñas, ese ciclo de noventa días que todos detestaban, también se eliminó. En lugar de esas reglas, el NIST ahora exige que los servicios verifiquen las contraseñas enviadas con una lista negra de credenciales comprometidas conocidas.

El cambio se justifica mediante cálculos de entropía. Un conjunto alfanumérico de 62 caracteres produce aproximadamente 5,95 bits por carácter. El conjunto completo de caracteres ASCII imprimibles de 95 caracteres (alfanuméricos más especiales) produce 6,57. Añadir el conjunto completo de caracteres especiales aumenta el consumo de bits en 0,62 por carácter. Añadir un carácter más de longitud completa aumenta el consumo a 5,95. La longitud determina la complejidad por un orden de magnitud.

El informe de Verizon de 2025 sobre investigaciones de filtraciones de datos reveló que las credenciales representan el 22 % de todos los puntos de entrada confirmados a las filtraciones. El relleno de credenciales (la reutilización automatizada de listas de contraseñas filtradas) se produce en un 19 % de los intentos de autenticación, con un pico del 44 %. El 49 % de los usuarios reutiliza contraseñas en diferentes servicios. Ninguno de estos problemas se resuelve exigiendo el uso de mayúsculas.

Una contraseña alfanumérica larga sin caracteres especiales es más difícil de descifrar que una corta que cumpla con una lista de verificación de complejidad. Si su banco aún le exige crear una contraseña de doce caracteres con una letra mayúscula, un dígito y un carácter especial, esa política ya no cumple con el estándar federal de EE. UU.

¿Dónde más aparecen los caracteres alfanuméricos?

Si dejamos de lado la criptografía, las contraseñas y las cadenas alfanuméricas siguen apareciendo siempre que un sistema necesita un identificador que los humanos puedan escribir y que las computadoras puedan analizar sin ambigüedad.

Los códigos bancarios son un ejemplo sencillo. Un IBAN puede tener hasta treinta y cuatro caracteres alfanuméricos y siempre comienza con un código de país ISO de dos letras. Los códigos SWIFT/BIC tienen ocho u once caracteres. Las matrículas varían según el país (una matrícula del Reino Unido no se parece en nada a una alemana), pero ambas son subconjuntos alfanuméricos del mismo conjunto de sesenta y dos símbolos. Los números de identificación de vehículos (VIN) tienen exactamente diecisiete caracteres en todo el mundo, y se prohíben deliberadamente las letras I, O y Q para que se distingan visualmente de los dígitos.

Las claves API son ejemplos cotidianos que la mayoría de los usuarios ni siquiera se molestan en revisar. Una clave de Stripe abre `sk_live_` seguida de un token alfanumérico. Una clave de acceso de AWS abre `AKIA` seguida de dieciséis caracteres alfanuméricos. Un token de acceso personal de GitHub emitido después de 2021 abre `ghp_`. Estos prefijos son alfanuméricos y se eligieron para que los proveedores puedan escanear repositorios y registros públicos en busca de claves filtradas. En muchos casos, este escaneo detecta el fallo antes de que lo haga cualquier atacante.

Los códigos QR merecen una breve mención. La norma ISO/IEC 18004 define un modo alfanumérico específico que codifica un conjunto de 45 caracteres (letras mayúsculas, dígitos, espacios y algunos signos de puntuación) de forma más eficiente que el modo de bytes general. Un código QR que contiene únicamente contenido alfanumérico en mayúsculas almacena aproximadamente 1,6 veces más datos por casilla que el mismo contenido codificado como bytes.

Base32, Base58, Base64: Cuando la criptografía elige un subconjunto

Existen algunos estándares de codificación específicos para convertir datos binarios en un subconjunto alfanumérico. La referencia es el RFC 4648, publicado por la IETF en 2006, que define tres codificaciones.

Hexadecimal es el más simple de todos. Oficialmente Base16. Dieciséis caracteres: 0–9, a–f. Se usa para direcciones Ethereum, hashes criptográficos y casi cualquier depuración de bajo nivel donde se necesite leer bytes sin procesar. Base32 es el más interesante. El alfabeto de 32 caracteres se eligió para que no distinguiera entre mayúsculas y minúsculas y, en algunas variantes, para omitir los dígitos 0, 1, 8 y 9, que pueden generar confusión visual. Cualquiera que haya configurado la autenticación de dos factores e ingresado una contraseña secreta en Google Authenticator ha escrito Base32, casi siempre sin saberlo.

Base64 es el sistema de codificación por excelencia. Consta de sesenta y dos caracteres alfanuméricos más los símbolos `+` y `/`. Una variante segura para URL los reemplaza por `-` y `_`. Base64 se utiliza para enviar archivos adjuntos de correo electrónico, codificar URL de datos en HTML y empaquetar tokens web JSON para OAuth.

El sistema Base58 de Bitcoin no está contemplado en el RFC 4648. Satoshi Nakamoto lo desarrolló de forma independiente. El objetivo era diferente: evitar que los humanos escribieran direcciones manualmente, no optimizar la eficiencia de bytes por carácter. El resultado fue un alfabeto propio que nadie más utiliza. Base85, a veces llamado Ascii85, funciona en sentido contrario. Compacta cuatro bytes en cinco caracteres y se utiliza en archivos PDF y PostScript, donde la mayor densidad justifica la pérdida de legibilidad.

Carácter alfanumérico

Errores comunes: confusión visual y parecidos.

Las mismas razones por las que las criptomonedas eligen subconjuntos de caracteres alfanuméricos son las mismas por las que todos cometemos errores. Unos pocos pares de caracteres son la causa de la mayoría de los problemas.

Los caracteres que suelen causar confusión son el cero y la letra O mayúscula. El dígito uno, la letra l minúscula y la letra I mayúscula. La letra l minúscula y la letra I mayúscula. Bitcoin Base58 descarta los cuatro por este motivo. Otros sistemas utilizan diferentes soluciones: los números de identificación vehicular (VIN) descartan la I, la O y la Q; algunos códigos financieros descartan la O por completo; y existen normas nacionales sobre matrículas que prohíben la letra que más se parezca a un 0 en la tipografía del país.

Un problema más complejo y reciente son los ataques de homógrafos Unicode. La idea fue documentada en un artículo de 2001 por Evgeniy Gabrilovich y Alex Gontmakher. Un homógrafo intercambia un carácter visualmente idéntico de un alfabeto diferente; por ejemplo, la 'а' cirílica (U+0430) en lugar de la 'a' latina (U+0061). Si se registra un nombre de dominio con esa sustitución, se puede alojar una página de phishing indistinguible de la del banco real. Los navegadores modernos muestran la representación Punycode sin procesar —algo como `xn--80akhbyknj4f`— cuando un dominio mezcla alfabetos. Esta defensa detecta la mayoría de los ataques, pero no todos.

Cómo crear una contraseña alfanumérica segura en 2026

Tres reglas. Todas ellas derivadas directamente de las fórmulas matemáticas del NIST.

Primero: la longitud es más importante que la clase de caracteres. Procure usar dieciséis caracteres o más. Esta regla se aplica tanto si el sistema acepta solo letras y dígitos como si acepta el conjunto completo de caracteres ASCII imprimibles.

Segundo: si tienes que memorizarla, usa una contraseña. Cuatro palabras aleatorias de una lista extensa —la lista de Diceware es la opción más común— son más seguras que casi cualquier contraseña corta que una persona pueda inventar.

Tercero: para todo lo demás, usa un gestor de contraseñas. Deja que el gestor genere largas cadenas alfanuméricas que nunca tendrás que leer ni escribir a mano. Una vez que el gestor procesa la salida, la legibilidad deja de ser importante.

Guía rápida: Recuentos alfanuméricos y ejemplos

Sesenta y dos con distinción entre mayúsculas y minúsculas. Treinta y seis sin ella. Códigos ASCII 48–57 para dígitos. 65–90 para mayúsculas. 97–122 para minúsculas. Coincidencia del conjunto completo con la expresión regular `[A-Za-z0-9]` o la clase POSIX `[:alnum:]`. Ese conjunto de sesenta y dos símbolos es la base de casi todos los identificadores digitales que utilizarás esta semana. Contraseñas. Claves API. IBAN. Matrículas. ID de transacciones. Cada dirección de monedero que generes.

¿Alguna pregunta?

Porque Satoshi Nakamoto se sentó y eliminó todos los caracteres que chocaban visualmente con otros en las fuentes comunes. El cero choca con la O mayúscula. La l minúscula choca con la I mayúscula. Un usuario de Bitcoin que vuelva a escribir una dirección desde una copia de seguridad en papel se confundirá. Esa confusión le cuesta dinero a la gente. Si se eliminan los cuatro caracteres problemáticos, la tasa de errores tipográficos se desploma.

No. La puntuación, los símbolos matemáticos, los símbolos monetarios, los espacios en blanco: todo lo que no sea una letra o un dígito queda fuera del conjunto alfanumérico. Puedes añadirlos a una contraseña y obtener una pequeña cantidad de entropía por cada carácter. Añadir un solo carácter extra suele aportar una cantidad considerablemente mayor.

Una contraseña compuesta por letras y dígitos, sin símbolos. La norma NIST SP 800-63B Rev 4, publicada en septiembre de 2024, dejó de exigir caracteres especiales en su revisión actual. La recomendación vigente es un mínimo de quince caracteres, además de una comprobación de la lista de bloqueo contra credenciales que hayan sido comprometidas. La mayoría de las políticas de contraseñas corporativas aún están desactualizadas con respecto a esta recomendación.

Sí, aunque nunca el conjunto completo. Las direcciones de Bitcoin antiguas usan Base58, que elimina 0, O, I y l. Las direcciones SegWit Bech32 usan un subconjunto de treinta y dos caracteres en minúscula que elimina 1, b, i y o. El razonamiento detrás de ambas opciones es idéntico: la gente confunde caracteres parecidos al volver a escribir, y quienes se confunden al volver a escribir pierden dinero.

No. El espacio reside en la clase whitespace, que es un grupo completamente aparte. Ejecuta cualquier prueba —POSIX `[:alnum:]`, regex `[A-Za-z0-9]`, Python `isalnum()`, JavaScript regex `\w`— y todas rechazan espacios, tabulaciones y saltos de línea.

Sesenta y dos, si importa la distinción entre mayúsculas y minúsculas. Veintiséis mayúsculas, veintiséis minúsculas, diez dígitos. Si desactivas la distinción entre mayúsculas y minúsculas, trabajarás con treinta y seis. Esta división se remonta al estándar ASCII de 1968 y no ha cambiado desde entonces.

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.