Bibliothek zum Konvertieren zwischen Base64 und Hex für C++

Ich kann keinen Beispielcode finden, um eine Base64-Zeichenfolge in eine hexadezimale Zeichenfolge zu konvertieren, beide im am besten lesbaren Format, z

5c2e00405e56439da66a4bd279dbfba2d605d6949142ade664ce0fc4a7ceee
0a9f0c5f5b8a13bfe6431fe48de5b7935b6604946c811e3b836f77c28f059df801

und

XC4AQF5WQ52makvSedv7otYF1pSRQq3mZM4PxKfO7gqfDF9bihO/5kMf5I3lt5NbZgSUbIEeO4Nvd8KPBZ34AQ==

Gibt es eine solche Open-Source-Bibliothek? Wenn ja, wo?

Sie könnten diese Frage auf Stackoverflow stellen ... bessere Chancen, die besten Antworten auf Ihre Frage zu erhalten. Auf dieser Seite dreht sich alles ums Programmieren!
Hilft Ihnen dieser Code bei der Konvertierung?
Nun, ich habe gemäß Ihrer Frage erneut nach "Freien Bibliotheken" gesucht und diese Bibliothek namens Crypto++ gefunden ... Sie unterstützt Base64- und Hex-Konvertierung, wie unter Funktionen aufgeführt ...: hex, base-32, and base-64 coding/decoding... Ich weiß nicht, wie es funktioniert das, aber hier ist ein Link zu der Referenzdokumentation, die auf dieser Website verfügbar ist.
Fertig! Antwort mit Funktionen und Links zum Herunterladen und Referenzieren gepostet...

Antworten (4)

Crypto++®-Bibliothek 5.6.2

Crypto++ Library ist eine kostenlose C++-Klassenbibliothek mit kryptografischen Schemata.

Weitere Merkmale sind:

  • Pseudozufallszahlengeneratoren (PRNG): ANSI X9.17 Anhang C, RandomPool
  • passwortbasierte Schlüsselableitungsfunktionen: PBKDF1 und PBKDF2 aus PKCS #5, PBKDF aus PKCS #12 Anhang B
  • Shamirs Secret-Sharing-Schema und Rabins Informationsverteilungsalgorithmus (IDA)
  • schnelle Integer- (bignum) und Polynomoperationen mit mehreren Genauigkeiten
  • Finite-Feld-Arithmetik, einschließlich GF(p) und GF(2^n)
  • Primzahlerzeugung und Verifikation
  • nützliche nicht-kryptografische Algorithmen
    • DEFLATE (RFC 1951) Komprimierung/Dekomprimierung mit gzip (RFC 1952) und zlib RFC 1950) Formatunterstützung
    • Hex-, Base-32- und Base-64-Codierung/Decodierung
    • 32-Bit-CRC- und Adler32-Prüfsummenklassen-Wrapper für diese Betriebssystemfunktionen (optional):
    • hochauflösende Timer unter Windows, Unix und Mac OS
    • Berkeley- und Windows-Buchsen
    • Windows benannte Pipes
    • /dev/random, /dev/urandom, /dev/srandom
    • CryptGenRandom von Microsoft unter Windows
  • Eine High-Level-Schnittstelle für die meisten der oben genannten Funktionen, die eine Filter-/Pipeline-Metapher verwendet
  • Benchmarks und Validierungstests
  • x86-, x86-64- (x64), MMX- und SSE2-Assembler-Code für die am häufigsten verwendeten Algorithmen, mit Laufzeit-CPU-Funktionserkennung und Codeauswahl
    • unterstützt Inline-Assemblierung im GCC- und MSVC-Stil sowie MASM für x64
  • bestimmte Versionen sind in FIPS 140-2-validierter Form verfügbar

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

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

Wow, wirklich gut geschriebene Antwort!
@Cincinnatus Sehr gut kopiert, wie es scheint – folgen Sie dem Link, um das Original zu sehen. // mk117: Copy-Paste-Inhalte können Urheberrechtsprobleme verursachen und sind daher in dieser Form auf SE-Sites nicht sehr willkommen. Sie sollten immer deutlich machen, was eine Kopie und was Ihr eigener Inhalt ist. Letzteres fehlt übrigens in Ihrer Antwort – z. B. persönliche Erfahrung mit diesem Produkt;)
@Izzy lol, ich bin direkt zum Handbuch gegangen.
Für mich hat der "Download"-Button eine Augenbraue hochgezogen. Dann sah ich die Bearbeitung von e-sushi (Dank an ihn für das Erkennen der Copy-Pasta) und kannte den Grund;)

Ich bin mir nicht sicher, ob ich es in C++ machen soll, aber in Python ist es einfach:

#!/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)

Wenn Sie also nur ein Dienstprogramm benötigen, um dies zu tun , ist es auch relativ einfach, Python in Ihr C++-Programm einzubetten und umgekehrt, sodass die Verwendung von Python als Bibliothek eine Option für Sie sein kann, siehe Einbetten für Python 2 oder für Python3 Beachten Sie, dass Sie für Python3 im obigen Code print in ändern müssen .binascii.hexlify(data)print(binascii.hexlify(data))

Sie benötigen keine Bibliothek von Drittanbietern, wenn Sie Qt verwenden :

#include <QByteArray>

...

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

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

QByteArray hexStr = str2.toHex();
Nur damit ich mich nicht irre: ist Qt als Framework für C++ und QML nicht auch „3rd party“?

Als Alternative zu den bereits erwähnten, möglichen Lösungen…

libb64: Base64-Codierungs-/Decodierungsroutinen

libb64 ist eine Bibliothek von ANSI-C-Routinen zum schnellen Kodieren/Dekodieren von Daten in und aus einem base64-kodierten Format. C++-Wrapper sind ebenso enthalten wie der Quellcode für eigenständige ausführbare Kodierungs- und Dekodierungsdateien.

Lizenz:
Public Domain.

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