Russian Qt Forum
Март 29, 2024, 08:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Преобразование char * в uint8_t*  (Прочитано 5368 раз)
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« : Январь 12, 2021, 16:08 »

Добрый день собираюсь использовать библиотек шифрования/ расшифрования по ГОСТ
https://github.com/faddistr/GOST28147
Вся проблема в том что данные Я храню в массиве
char mas[] или qbytearray. А функция шифрования/расшифрования GOST_Encrypt_SR требует тип
uint8_ t*.Следовательно как мне грамотно произвести преобразование из char * в uint8_t* ?
« Последнее редактирование: Январь 12, 2021, 16:10 от koldun90 » Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #1 : Январь 12, 2021, 20:01 »

я использовал "штатную" реализацию (gost89.h и gost89.c) из состава openssl-1.0.1u.tar.gz, а не эту заброшенную поделку

Код:
#include "gost89.h"
QByteArray gostEncodeCfb(const QByteArray &msg)
{
    static const unsigned char iv[16] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    QByteArray data64(msg);
    while (data64.size() % 8) data64.append((char)0);
    QByteArray data64Enc(data64.size(), 0);
    gost_enc_cfb(&ctx, iv, (const unsigned char*)data64.constData(), (unsigned char*)data64Enc.data(), data64.size() / 8);
    return data64Enc;
}
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #2 : Январь 12, 2021, 21:06 »

я использовал "штатную" реализацию (gost89.h и gost89.c) из состава openssl-1.0.1u.tar.gz, а не эту заброшенную поделку

Код:
#include "gost89.h"
QByteArray gostEncodeCfb(const QByteArray &msg)
{
    static const unsigned char iv[16] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    QByteArray data64(msg);
    while (data64.size() % 8) data64.append((char)0);
    QByteArray data64Enc(data64.size(), 0);
    gost_enc_cfb(&ctx, iv, (const unsigned char*)data64.constData(), (unsigned char*)data64Enc.data(), data64.size() / 8);
    return data64Enc;
}
Если не сложно можете дать исходник?
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #3 : Январь 12, 2021, 21:31 »

https://ftp.openssl.org/source/old/1.0.1/openssl-1.0.1u.tar.gz
внутри см. openssl-1.0.1u/engines/ccgost/gost89.*
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #4 : Январь 13, 2021, 09:11 »

https://ftp.openssl.org/source/old/1.0.1/openssl-1.0.1u.tar.gz
внутри см. openssl-1.0.1u/engines/ccgost/gost89.*

Если не сложно вам приведите пожалуйста пример как шифровать и расшифровать qbytearray в режиме ecb(простой замены), а то просто там не сказано как пользоваться.


Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #5 : Январь 14, 2021, 10:22 »

Режимом  ECB не рекомендуется пользоваться https://ru.wikipedia.org/wiki/Режим_шифрования
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #6 : Январь 14, 2021, 20:23 »

Огромное вам спасибо
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #7 : Февраль 15, 2021, 13:05 »

char* encoded_data = some_encode_func(...);

uint8_t* your_uint8_array = reinterpret_cast<uint8_t*>(ecnoded_data);
При условии что sizeof(char) == sizeof(uint8_t) в вашей системе
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.059 секунд. Запросов: 23.