Вот базовый код шифрования и дешифрования сообщения:
#include <stdio.h>
#include <openssl/blowfish.h>
#include <string.h>
//gcc cryptage.c -o cryptage -lcrypto
int main(){
BF_KEY *key = malloc(sizeof(BF_KEY));
unsigned char *crypt_key = "Key of encryption";
const unsigned char *in = "Message to encrypt";
int len = strlen(crypt_key);
unsigned char *out = malloc(sizeof(char)*len);
unsigned char *result = malloc(sizeof(char)*len);
//Defining encryption key
BF_set_key(key, len, crypt_key);
//Encryption
BF_ecb_encrypt(in, out, key, BF_ENCRYPT);
//Décryption
BF_ecb_encrypt(out, result, key, BF_DECRYPT);
fprintf(stdout,"Result: %s\n",result);
return 0;
}
Моя проблема в том, какой результат я получаю. Это всегда строка из 8 символов, не более. Не могли бы вы помочь мне зашифровать и расшифровать полное сообщение?
Спасибо!
BF_encrypt
справочной странице: BF_encrypt() и BF_decrypt() функции самого низкого уровня для шифрования Blowfish. Они шифруют/дешифруют первые 64 бита вектора, на который указывают данные, используя ключевой ключ. Эти функции не следует использовать, если вы не реализуете «режимы» Blowfish. Альтернативой является использование BF_ecb_encrypt(). Если вы все еще хотите использовать эти функции, вы должны знать, что они принимают каждый 32-битный фрагмент в порядке хост-байтов, который является прямым на платформах с прямым порядком байтов и прямым порядком байтов на платформах с прямым порядком байтов . - person jww   schedule 31.05.2017