Я использую ed25519-donna для цифровой подписи.Преобразование base64 декодированной строки в unsigned char [32]
Ключи unsigned char[32]
, а подписи - unsigned char[64]
.
Я нашел this base64 encoding, но он только расшифровывается в string
.
Я нашел и попробовал много методов, но до сих пор не знаю, как конвертировать.
Как может base64 декодировать string
быть преобразованным в unsigned char[32]
?
его не нужно преобразовывать. его база уже есть 'unsigned char *', а по дизайну используется как 'unsigned char const *'. У вас нет проблемы, просто передавая 'var' как параметр' unsigned char const * ', где' var' объявляется как 'unsigned char var [32];' и правильно загружается вашим двоичным ключом/сигнатурой. – WhozCraig
Ах. Это значительно больше смысла. Существует множество вариантов кодирования/декодирования base64. Обычно у вашего Crypto API есть один (конечно, Microsoft CryptoAPI и OpenSSL). Если вы ищете разумную реализацию [это может сработать для вас] (http://base64.sourceforge.net/b64.c). Нелегко просто передать данные из векторного или плоского массива, а не файла, и его довольно солидно. – WhozCraig
Если они являются 'std :: string', вы должны просто использовать любой алгоритм декодирования base64, передавая строки' c_str() 'и' length() 'соответственно. В конечном итоге все строки в байтах или байты в строку в конце. – WhozCraig