Я не могу найти пример кода для преобразования строки Base64 в шестнадцатеричную строку, как в наиболее читаемом формате, например
5c2e00405e56439da66a4bd279dbfba2d605d6949142ade664ce0fc4a7ceee
0a9f0c5f5b8a13bfe6431fe48de5b7935b6604946c811e3b836f77c28f059df801
а также
XC4AQF5WQ52makvSedv7otYF1pSRQq3mZM4PxKfO7gqfDF9bihO/5kMf5I3lt5NbZgSUbIEeO4Nvd8KPBZ34AQ==
Существует ли такая библиотека с открытым исходным кодом? Если да, то где?
Библиотека Crypto++® 5.6.2
Библиотека Crypto++ — это бесплатная библиотека классов C++ для криптографических схем.
Другие функции включают в себя:
- генераторы псевдослучайных чисел (PRNG): ANSI X9.17, приложение C, RandomPool
- функции получения ключа на основе пароля: PBKDF1 и PBKDF2 из PKCS #5, PBKDF из PKCS #12, приложение B
- Схема обмена секретами Шамира и алгоритм распространения информации Рабина (IDA)
- быстрые целочисленные (bignum) и полиномиальные операции с высокой точностью
- арифметика конечных полей, включая GF(p) и GF(2^n)
- генерация и проверка простых чисел
- полезные некриптографические алгоритмы
- DEFLATE (RFC 1951) сжатие/распаковка с поддержкой форматов gzip (RFC 1952) и zlib RFC 1950)
- кодирование/декодирование hex, base-32 и base-64
- 32-разрядные обертки классов контрольной суммы CRC и Adler32 для следующих функций операционной системы (необязательно):
- таймеры высокого разрешения в Windows, Unix и Mac OS
- Сокеты в стиле Беркли и Windows
- Именованные каналы Windows
- /dev/случайный, /dev/urandom, /dev/случайный
- CryptGenRandom от Microsoft в Windows
- Высокоуровневый интерфейс для большей части вышеперечисленного с использованием метафоры фильтра/конвейера.
- бенчмарки и проверочное тестирование
- Ассемблерный код x86, x86-64 (x64), MMX и SSE2 для наиболее часто используемых алгоритмов с обнаружением функций ЦП во время выполнения и выбором кода
- поддерживает встроенную сборку в стиле GCC и MSVC, а также MASM для x64.
- некоторые версии доступны в проверенной форме FIPS 140-2.
Скачать:
http://www.cryptopp.com/#download
Руководство:
http://www.cryptopp.com/docs/ref/
Не слишком уверен в том, чтобы сделать это на С++, но на питоне это легко:
#!/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)
Поэтому, если вам просто нужна утилита для этого, get python , также достаточно просто встроить python в вашу программу на C++ и наоборот, поэтому использование python в качестве библиотеки может быть для вас вариантом, см. Встраивание для python 2 или для python3 обратите внимание, что для Python3 вам нужно изменить печать binascii.hexlify(data)
наprint(binascii.hexlify(data))
в приведенном выше коде.
Вам не нужна сторонняя библиотека, если вы используете Qt :
#include <QByteArray>
...
QByteArray str1 = "5c2e00405e56439da66a4bd279dbfba2d605d6949142...";
QByteArray hex = QByteArray::fromHex(str1);
QByteArray str2 = "XC4AQF5WQ52makvSedv7otYF1pSRQq3mZM4PxKfO7gqfDF9bihO...";
QByteArray base64 = QByteArray::fromBase64(str2);
QByteArray hexStr = str2.toHex();
В качестве альтернативы уже упомянутому, потенциальные решения…
libb64: Процедуры кодирования/декодирования Base64
libb64 — это библиотека подпрограмм ANSI C для быстрого кодирования/декодирования данных в формат с кодировкой base64 и из него. Включены оболочки C++, а также исходный код для автономных исполняемых файлов кодирования и декодирования.
Лицензия:
общественное достояние.
Скачать:
http://sourceforge.net/projects/libb64/files/latest/download?source=files
мк117
мк117
мк117
hex, base-32, and base-64 coding/decoding
... Я не знаю, как это работает это, но вот ссылка на справочную документацию , доступную на этом веб-сайте.мк117