LINUX.ORG.RU

Blowfish


0

0

Если кто сталкивался с этой проблемой подскажите, есть функция для шифрования файлов Блоуфишем вот она:
void encrypt_file(int in, int out){
char buffer[128];
char outbuf[128];
int rc;
char key[]="denis";
BF_KEY new;
BF_set_key(&new,strlen(key),key);

while((rc=read(in,buffer,sizeof(buffer)))>0){
BF_cbc_encrypt(buffer,outbuf,rc,&new,"12345678",BF_ENCRYPT);
write(out,outbuf,rc);
}
}

Но когда программа доходит до строки BF_cdb_... программа вылетает с SIGSEGV.

★★★★

Пока за неимением лучшего совета, попробуй вынести используемые буферы (buffer, outbuf) из стека, например сделав из статическими.

anonymous
()

Блии. я тормоз. А ты вообще ... гхм....
Прототип у функции какой?

void BF_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
             const BF_KEY *schedule, unsigned char *ivec, int encrypt)

а ты что послал?

BF_cbc_encrypt(buffer,outbuf,rc,&new,"12345678",BF_ENCRYPT);

Какого фига вместо буфера на восемь(8) чаров ты ему const char * "12345678" подставил?
Срочно исправляйся, он ждет именно char ivec[8]. Инициализировать который надо перед 
использованием.
Мануал, короче, читай.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.