Saltearse al contenido

B64Coding

Utilidad para gestionar la codificación y decodificación de datos utilizando Base64.

Esta archivo proporciona funciones para:

  • Codificar una lista de cadenas en Base64.
  • Decodificar una cadena Base64 a una lista de cadenas.
  • Realizar una codificación compleja que combina sal, hash y transformación XOR.
  • Decodificar una cadena previamente codificada de forma compleja, validando la integridad de los datos.

Importación

import 'package:togie/utils/b64_coding.dart';

Funciones

MétodoDescripción
b64Encode(List<String> data)Une la lista de cadenas usando el separador |, convierte la cadena resultante a bytes (UTF-8) y la codifica en Base64.
b64Decode(String data)Decodifica una cadena Base64 a bytes (UTF-8) y la divide usando el separador | para obtener la lista original de cadenas.
encodeComplex(String input)Realiza una codificación que:
  • Genera una sal aleatoria de 16 bytes.
  • Convierte la cadena de entrada a bytes.
  • Combina la sal con los bytes de entrada.
  • Calcula un hash SHA-256 de la combinación sal + datos.
  • Aplica una transformación XOR entre los bytes de la entrada y la sal.
  • Devuelve un JSON codificado en Base64 que incluye la sal, el hash y los datos transformados.
decodeComplex(String encoded)Decodifica una cadena generada por encodeComplex:
  • Decodifica la cadena Base64 para obtener un JSON.
  • Extrae la sal, el hash y los datos transformados.
  • Revierte la transformación XOR para recuperar los datos originales.
  • Verifica el hash calculado contra el incluido en el JSON para asegurar la integridad.
  • Devuelve la cadena original si la verificación es exitosa, o lanza una excepción en caso contrario.

Ejemplo de uso:

String b64 = b64Encode([url]);