Шифрование строк с использованием XOR и хеширование с использованием BSAFE (OpenSSL-подобная библиотека) - PullRequest
0 голосов
/ 29 июня 2011

Мне нужно вычислить хэш SHA-2 строки, зашифрованной с помощью XOR.Я использую библиотеку RSA BSafe (очень похоже на OpenSSL).Моя функция XOR выглядит примерно так:

for (int i = 0; i < strlen(combined); i++)
{
    encrypted[i] = (combined[i] ^ authkey[i%strlen(authkey)]);

}

Это создает несколько символов '\ 0' (NullTerminations) внутри массива char.После этого я передаю эту зашифрованную строку в мою функцию hmac ().Теперь проблема в том, что, когда BSafe HMAC вычисляет хэши для массивов символов, он не ожидает промежуточных символов '\ 0'.Как мне обойти эту проблему?Даже если ответ в заданных функциях WRT в OpenSSL был бы полезен, поскольку оба они очень похожи.

Заранее спасибо!

1 Ответ

2 голосов
/ 29 июня 2011

С OpenSSL вы передаете длину явно.Данные, содержащие значения NULL, не имеют значения.

unsigned char *HMAC(const EVP_MD *evp_md, const void *key,
              int key_len, const unsigned char *d, int n,
              unsigned char *md, unsigned int *md_len);

n - это длина ваших данных, на которую указывает d .Очевидно, что вы сами должны отслеживать длину *d, так как strlen не будет работать.Я был бы шокирован, если бы BSafe не работал таким же образом.

Конечно, как сказано в моем комментарии, использование одноразового пэда два раза ужасно небезопасно.Вы почти наверняка не должны повторно реализовывать крипто примитивы;BSafe не предоставляет потоковые шифры?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...