2013-09-02 3 views
0

Итак, вот моя программа на C, я не могу понять, почему я не могу расшифровать зашифрованную строку. Я хотел написать небольшую программу на C, которая берет строку, шифрует, затем берет зашифрованную строку и с предоставленным ключом, расшифровывает. Два вопроса: A) Что я здесь делаю неправильно? B) Как хранится ключ, то есть, если я сейчас работаю над новым шифрованием, и пользователь хочет расшифровать предыдущий текст, когда он поставляет пароль, будет ли он взорваться, а затем узнать, как его расшифровать?Шифрование и дешифрование Blowfish в C

Вот документация Blowfish: http://www.openssl.org/docs/crypto/blowfish.html и теперь моя программа:

#include <string.h> 
#include "blowfish.h" 
#include "bf_pi.h" 
#include "bf_locl.h" 
#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    char from[128], to[128]; 
    int len = 128; 
    BF_KEY key; 
    char temp_buf[16]; 
    int n = 0;   /* internal blowfish variables */ 
    unsigned char iv[8];  /* Initialization Vector */ 
    /* fill the IV with zeros (or any other fixed data) */ 
    memset(iv, 0, 8); 


    printf("input password: "); 
    scanf("%s", &temp_buf); 

    strcpy(from, "ABCDEFGHTHISISTHEDATA"); //ENCRYPT THIS 

    BF_set_key(&key, 16, temp_buf); 

    BF_cfb64_encrypt(from, to, len, &key, iv, &n, BF_ENCRYPT); 
    printf("encrypted to --> %s\n", to); //SUCCESSFULY ENCRYPTED 


    BF_cfb64_encrypt(from, to, len, &key, iv, &n, BF_DECRYPT); 
    printf("File %s has been decrypted to --> %s \n",from, to); //FAILS DOES NOT DECRYPT 
} 

ответ

1

Я думаю, вы должны переключить from и to переменные:

//as WhozCraig mentioned, fill in n and iv again before decryption 
n = 0;   /* internal blowfish variables */ 
/* fill the IV with zeros (or any other fixed data) */ 
memset(iv, 0, 8); 

BF_cfb64_encrypt(to, from, len, &key, iv, &n, BF_DECRYPT); 
printf("File %s has been decrypted to --> %s \n",to, from); //FAILS DOES NOT DECRYPT 

Сохранив оригинал IV (это не сложно, все было нули) и сброс n до нуля до decr yption будет получить то, что хочет OP - WhozCraig

+0

Я уже пробовал, что НЕ работал. – user2740412

+0

Можете ли вы опубликовать результаты? –

+0

пароль ввода: привет зашифровано до -> Z ??? /? W? N \t Z> j4 ?? LANG – user2740412

Смежные вопросы