Неверная длина строки после шифрования Blowfish - PullRequest
0 голосов
/ 16 августа 2011

Я провел небольшое тестирование с кодировкой Blowfish и кое-что заметил. Кодированная строка не всегда такая же длинная, как исходная строка. иногда короче.

Если я хочу декодировать закодированную строку, мне нужна длина для декодирования в функции openssl:

BF_cfb64_encrypt(encoded_input,decoded_output,length_to_decode,&key,iv,&num,BF_DECRYPT);    

Проблема здесь в том, что у меня нет length_to_decode, если я не знаю длину исходной строки. если я использую длину декодированной строки в качестве length_to_decode, то это может быть слишком коротким.

Если я использую большую длину, то декодированная строка неверна. Так что мне нужно знать длину для декодирования с кодированием Blowfish?

во всем примере кода в Интернете кодирование и декодирование всегда выполняется в одной функции, а в примере декодирования для декодирования используется жестко закодированная длина. но в реальной жизни я не знаю длину закодированной строки и что тогда?

вот пример:

source string:    sdcfgssssssss
source length:    13
encryption key:   s
encrypted output: :‹(
encrypted length: 4

Я запускаю свой ключ так:

BF_KEY key;
const char * keyStr = "s";
BF_set_key(&key, strlen(keyStr), (const unsigned char *)keyStr);

1 Ответ

5 голосов
/ 16 августа 2011

Длина выхода идентична длине входа. Обратите внимание, что выходные данные могут содержать символы NUL, поэтому не следует использовать strlen в данных.

...