Ofuscador de cadenas de Dart
Ofusca literales de cadena de Dart con 6 técnicas distintas: secuencias de escape hexadecimales, String.fromCharCodes con matrices de puntos de código, decodificación Base64 con dart:convert, matrices de bytes cifradas con XOR y descifrado en tiempo de ejecución, concatenación de cadenas divididas y StringBuffer con llamadas a writeCharCode. Cada método genera código Dart válido que produce la cadena original en tiempo de ejecución. Compara todos los métodos lado a lado, filtra por técnica y copia el código generado: todo gratis, privado y sin registro.
Obfuscate Dart string literals using 6 different techniques: hex escape sequences, String.fromCharCodes, Base64 decoding with dart:convert, XOR-encrypted byte arrays, split string concatenation, and StringBuffer with writeCharCode calls. Each method generates valid Dart code that produces the original string at runtime. Compare all methods side by side or focus on one.
Enter a Dart string above to obfuscate it using 6 different techniques. Choose from hex escape sequences, String.fromCharCodes, Base64 decoding, XOR encryption, split concatenation, or StringBuffer + writeCharCode. Click any example below the input to get started.
Características
- 6 métodos de ofuscación: elige entre escapes hexadecimales, String.fromCharCodes, decodificación Base64, cifrado XOR, concatenación dividida y StringBuffer + writeCharCode. Cada uno genera código Dart válido.
- Comparación lado a lado: consulta los 6 métodos simultáneamente para comparar tamaño de código, legibilidad y fuerza de ofuscación. Filtra para centrarte en un solo método cuando encuentres el que te encaje.
- Análisis del impacto en el tamaño: cada método muestra el recuento de caracteres y el aumento de tamaño respecto a la cadena original, lo que te ayuda a equilibrar la fuerza de ofuscación con el tamaño del código.
- Ejemplos listos para Flutter: prueba rápidamente con cadenas realistas de Dart/Flutter: claves de Firebase, endpoints de API, consultas GraphQL y frases comunes. Todos los métodos funcionan en Flutter y en aplicaciones CLI de Dart.
¿Qué es la ofuscación de cadenas?
La ofuscación de cadenas es la práctica de transformar literales de cadena legibles en el código fuente en representaciones equivalentes que resultan difíciles de entender para las personas y las herramientas automatizadas. En lugar de escribir 'Hello' , puedes escribir String.fromCharCodes([72, 101, 108, 108, 111]) o String.fromCharCodes(base64.decode('SGVsbG8=')) . Ambos producen la misma cadena en tiempo de ejecución, pero se ven totalmente distintos en tu código fuente.
Cómo funciona la ofuscación
El ofuscador de cadenas de Dart aplica seis técnicas de transformación distintas. Los escapes hexadecimales convierten cada carácter en su valor de byte hexadecimal. String.fromCharCodes representa cada carácter como un entero de punto de código. La decodificación Base64 envuelve la cadena codificada en base64.decode() de dart:convert. El cifrado XOR aplica XOR a cada byte con una clave aleatoria y genera código de descifrado. La concatenación dividida parte la cadena en fragmentos codificados en hexadecimal unidos con +. StringBuffer + writeCharCode construye la cadena carácter a carácter. Cada técnica utiliza aleatorización para producir una salida distinta en cada generación.
Eficacia en la protección del código
La ofuscación de cadenas es especialmente importante en aplicaciones Flutter y Dart, porque el código Dart puede ser reversado a partir de instantáneas compiladas con AOT y archivos kernel. Aunque un reversor decidido puede ejecutar el código ofuscado para recuperar las cadenas originales, las cadenas ofuscadas dificultan mucho el escaneo automatizado y la coincidencia de patrones. Para obtener los mejores resultados, combina la ofuscación de cadenas con la opción --obfuscate integrada de Dart, que renombra símbolos, y usa la concatenación dividida para las cadenas críticas que no deberían aparecer completas en ningún lugar.
Privacidad y seguridad
Esta herramienta se ejecuta por completo en tu navegador con JavaScript del lado del cliente. Las cadenas que introduces y las salidas ofuscadas generadas nunca salen de tu dispositivo. No hay llamadas a API, ni procesamiento en el servidor, ni almacenamiento de datos, ni rastreo. El motor de ofuscación usa los métodos integrados de cadenas y números de JavaScript para todas las transformaciones: todo es local y privado.
Preguntas frecuentes
La ofuscación de cadenas de Dart transforma literales de cadena legibles del código fuente Dart en representaciones equivalentes pero difíciles de leer. Por ejemplo, «Hello» podría convertirse en String.fromCharCodes([72, 101, 108, 108, 111]) o String.fromCharCodes(base64.decode('SGVsbG8=')). Ambos producen la misma cadena en tiempo de ejecución, pero son mucho más difíciles de entender mediante descompilación o inspección del código.
La herramienta admite 6 métodos: secuencias de escape hexadecimales, String.fromCharCodes con puntos de código enteros, decodificación Base64 mediante base64.decode() de dart:convert, matrices de bytes cifradas con XOR y descifrado en tiempo de ejecución, concatenación de cadenas divididas con el operador + y StringBuffer con llamadas a writeCharCode() para construir carácter a carácter.
El cifrado XOR y StringBuffer con writeCharCode ofrecen la ofuscación más fuerte, porque la cadena original no se puede recuperar directamente sin ejecutar la transformación. Los escapes hexadecimales y la concatenación dividida son reconocibles para desarrolladores de Dart con experiencia, pero siguen siendo mucho más difíciles de leer que las cadenas simples.
Sí, todo el código generado es totalmente compatible con aplicaciones Flutter. Los métodos funcionan en widgets de Flutter, modelos, servicios, BLoCs, providers y cualquier archivo Dart. El método Base64 requiere añadir import 'dart:convert' al archivo. Todos los demás métodos funcionan con las bibliotecas básicas de Dart sin importaciones adicionales.
Por supuesto. El ofuscador de cadenas de Dart se ejecuta por completo en tu navegador. Las cadenas que introduces y la salida ofuscada nunca se envían a ningún servidor. Todo el procesamiento ocurre localmente en tu dispositivo. Sin registro.
El método XOR convierte cada carácter en su valor de byte ASCII y luego aplica XOR a cada byte con una clave de un solo byte elegida aleatoriamente. La salida incluye tanto los valores de byte con XOR como la clave como literales enteros. En tiempo de ejecución, el código Dart usa List.map() para revertir el XOR de cada byte y luego String.fromCharCodes() reconstruye la cadena original.
Sí. La ofuscación de cadenas complementa la opción --obfuscate integrada de Dart, que renombra símbolos y clases en las compilaciones de versión. Aplica primero la ofuscación de cadenas a tu código fuente y luego usa flutter build --obfuscate o dart compile --obfuscate para la compilación de versión.
Sí: 100 % gratis, sin registro, sin cuenta y sin límites de uso. Los 6 métodos de ofuscación, la comparación lado a lado y la función de copia están disponibles sin ninguna restricción.