Biblioteca para convertir entre Base64 y hexadecimal para c ++

No puedo encontrar ningún código de muestra para convertir una cadena Base64 en una cadena hexadecimal, tanto en el formato más legible, como

5c2e00405e56439da66a4bd279dbfba2d605d6949142ade664ce0fc4a7ceee
0a9f0c5f5b8a13bfe6431fe48de5b7935b6604946c811e3b836f77c28f059df801

y

XC4AQF5WQ52makvSedv7otYF1pSRQq3mZM4PxKfO7gqfDF9bihO/5kMf5I3lt5NbZgSUbIEeO4Nvd8KPBZ34AQ==

¿Existe tal biblioteca de código abierto? ¿Si es así, donde?

Puede hacer esta pregunta en stackoverflow ... mejores posibilidades de obtener las mejores respuestas a su pregunta. ¡Ese sitio es todo sobre programación!
¿ Te ayuda este código con la conversión?
Bueno, busqué nuevamente "Bibliotecas gratuitas" según su pregunta, y encontré esta biblioteca llamada Crypto ++ ... Es compatible con la conversión Hex y Base64, como se indica en las características ...: hex, base-32, and base-64 coding/decoding... No sé cómo lo hace eso, pero aquí hay un enlace a la documentación de referencia disponible en ese sitio web.
¡Hecho! Respuesta publicada con funciones y enlaces para descargar y consultar...

Respuestas (4)

Biblioteca Crypto++® 5.6.2

Crypto++ Library es una biblioteca gratuita de clase C++ de esquemas criptográficos.

Otras características incluyen:

  • generadores de números pseudoaleatorios (PRNG): ANSI X9.17 apéndice C, RandomPool
  • funciones de derivación de claves basadas en contraseña: PBKDF1 y PBKDF2 de PKCS #5, PBKDF de PKCS #12 apéndice B
  • El esquema de intercambio secreto de Shamir y el algoritmo de dispersión de información (IDA) de Rabin
  • operaciones rápidas de enteros de precisión múltiple (bignum) y polinomios
  • aritmética de campos finitos, incluidos GF (p) y GF (2 ^ n)
  • generación y verificación de números primos
  • algoritmos no criptográficos útiles
    • Compresión/descompresión DEFLATE (RFC 1951) con soporte de formato gzip (RFC 1952) y zlib RFC 1950)
    • Codificación/descodificación hexadecimal, base-32 y base-64
    • Contenedores de clase de suma de comprobación Adler32 y CRC de 32 bits para estas características del sistema operativo (opcional):
    • temporizadores de alta resolución en Windows, Unix y Mac OS
    • Zócalos estilo Berkeley y Windows
    • Canalizaciones con nombre de Windows
    • /dev/aleatorio, /dev/aleatorio, /dev/saleatorio
    • CryptGenRandom de Microsoft en Windows
  • Una interfaz de alto nivel para la mayoría de los anteriores, utilizando una metáfora de filtro/tubería
  • pruebas de referencia y validación
  • Código ensamblador x86, x86-64 (x64), MMX y SSE2 para los algoritmos más utilizados, con detección de funciones de CPU en tiempo de ejecución y selección de código
    • admite ensamblaje en línea estilo GCC y estilo MSVC, y MASM para x64
  • ciertas versiones están disponibles en forma validada FIPS 140-2

Descargar:
http://www.cryptopp.com/#download

Manual:
http://www.cryptopp.com/docs/ref/

¡Guau, respuesta realmente bien escrita!
@Cincinnatus Muy bien copiado, parece: siga el enlace para ver el original. // mk117: el contenido copiado y pegado puede causar problemas de derechos de autor y, por lo tanto, en este formulario no es muy bienvenido en los sitios de SE. Siempre debes dejar claro qué es una copia y qué es tu propio contenido. Por cierto, este último falta en su respuesta, por ejemplo, experiencia personal con este producto;)
@Izzy lol, fui directamente al manual.
Para mí, el botón "Descargar" levantó una ceja. Luego vi la edición de e-sushi (créditos para él por detectar el copy-pasta), y supe el motivo;)

No estoy muy seguro de hacerlo en C++ pero en python es fácil:

#!/usr/bin/env python

import base64
import binascii

def Print64Hex(instring):
    """ Prints a base 64 string as hex."""
    data = base64.standard_b64decode(instring)
    print binascii.hexlify(data)

if __name__ == "__main__":
    import sys
    for d in sys.argv[1:]:
        Print64Hex(d)

Entonces, si solo necesita una utilidad para hacer esto, obtenga python , también es razonablemente simple incrustar python dentro de su programa C ++ y viceversa, por lo que usar python como biblioteca puede ser una opción para usted, consulte incrustación para python 2 o para python3 tenga en cuenta que para Python3 debe cambiar la impresión binascii.hexlify(data)enprint(binascii.hexlify(data)) el código anterior.

No necesita ninguna biblioteca de terceros si usa Qt :

#include <QByteArray>

...

QByteArray str1 = "5c2e00405e56439da66a4bd279dbfba2d605d6949142...";
QByteArray hex = QByteArray::fromHex(str1);

QByteArray str2 = "XC4AQF5WQ52makvSedv7otYF1pSRQq3mZM4PxKfO7gqfDF9bihO...";
QByteArray base64 = QByteArray::fromBase64(str2);

QByteArray hexStr = str2.toHex();
Solo para estar seguro de que no me estoy confundiendo: ¿Qt, al ser un marco para C ++ y QML, no es también "tercero"?

Como alternativa a las ya mencionadas, posibles soluciones…

libb64: rutinas de codificación/descodificación Base64

libb64 es una biblioteca de rutinas ANSI C para codificar/descodificar datos rápidamente hacia y desde un formato codificado en base64. Se incluyen envoltorios de C++, así como el código fuente para ejecutables independientes de codificación y decodificación.

Licencia:
Dominio Público.

Descargar:
http://sourceforge.net/projects/libb64/files/latest/download?source=files