Я провел небольшое тестирование с кодировкой 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);