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?
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
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();
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
mk117
mk117
mk117
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.mk117