Перейти в группу новостей: 
 
Тема linux, си, base64
Написал killer1804 <denis@zlatunix.ru>
Дата 3 декабря 2020 в 14:07:15
Группа новостей kraft.programming

Так как в СИ нет стандартных функций, как например в PHP вида base64(),
приходиться читать маны, в одном из вычитал вот что:

BIO *bio, *b64;
char message[] = "Hello World \n";

b64 = BIO_new(BIO_f_base64());
bio = BIO_new_fp(stdout, BIO_NOCLOSE);
BIO_push(b64, bio);
BIO_write(b64, message, strlen(message));
BIO_flush(b64);

BIO_free_all(b64);

Read Base64 encoded data from standard input and write the decoded data
to standard output:

BIO *bio, *b64, *bio_out;
char inbuf[512];
int inlen;

b64 = BIO_new(BIO_f_base64());
bio = BIO_new_fp(stdin, BIO_NOCLOSE);
bio_out = BIO_new_fp(stdout, BIO_NOCLOSE);
BIO_push(b64, bio);
while((inlen = BIO_read(b64, inbuf, 512)) > 0)
BIO_write(bio_out, inbuf, inlen);

BIO_flush(bio_out);
BIO_free_all(b64);

примеры работают, но пишут в stdout, а мне нужно в буфер char*
писать туда и читать оттуда, можно разные буферы.

В интернетах нашел пример, но работает только кодирование, декодирование
дает пустую строку.
https://coderoad.ru/5288076/Base64-%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B8-%D0%B4%D0%B5%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-OpenSSL
Все сообщения в этой теме
 
#  linux, си, base64 killer1804 3 декабря 2020 в 14:07:15