![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 30.03.2011
Сообщений: 15
|
![]()
Здравствуйте!помогите устранить проблему. В данной функции есть два буфера: bufin и bufout. в буфер bufin считывается информация из файла размером 3 мегабайта, затем данная информация разбивается на блоки размером 160000, после этого каждый шифруется и записывается в буфер bufout, но поскольку размер последнего блока меньше 160000 то из-за этого во время выполнения программы выскакивает ошибка. как добить последний блок нулями, чтобы его размер был равен 160000.
#include "stdafx.h" #include <stdio.h> #include "rijndael.h" #include <iostream> #include <time.h> using namespace std; #define KEYBITS 256 #define bufsize 160000 unsigned char bufin[bufsize],bufout[bufsize]; int main(int argc, char ** argv) { unsigned long rk[RKLENGTH(KEYBITS)]; unsigned char key[KEYLENGTH(KEYBITS)]; int i; int nrounds,realreads; char password[80], sfname[80],dfname[80]; FILE *input,*output; unsigned char plaintext[16]; unsigned char ciphertext[16]; clock_t t1,t2; float tm; /* if (argc < 3) { fputs("Missing argument\n", stderr); return 1; }*/ printf("Enter key: "); gets(password); printf("Enter source file name: "); gets(sfname); printf("Enter destination file name: "); gets(dfname); t1=clock(); for (i = 0; i < sizeof(key); i++) key[i] = *password != 0 ? (*password)++ : 0; input=fopen(sfname,"rb"); output = fopen(dfname, "wb"); if (output == NULL) { fputs("File write error", stderr); return 1; } nrounds = rijndaelSetupEncrypt(rk, key, 256); //do { realreads=fread(bufin,1,bufsize,inp ut); int j=0; while(j<=realreads){ for (int i = 0; i < 16; i++) { plaintext[i] = bufin[i+j]; } rijndaelEncrypt(rk, nrounds, plaintext, ciphertext); for (int i = 0; i < 16; i++) { bufout[i+j]=ciphertext[i]; } j+=16; } fwrite(bufout,1,realreads,output); }//while(realreads==bufsize); t2=clock(); tm=(float)(t2-t1)/CLOCKS_PER_SEC; printf("t=%f\n",tm); fclose(output); } |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
память | offname | C# (си шарп) | 1 | 01.10.2011 10:33 |
кеш память | ***СкаЙ*** | Компьютерное железо | 0 | 01.03.2011 21:23 |
Оперативная память | elektroniks | Компьютерное железо | 4 | 20.02.2011 13:59 |
Память | Ghennadiy | Общие вопросы Delphi | 9 | 25.08.2009 09:23 |
Динамическая память!!! | Doholyan | Паскаль, Turbo Pascal, PascalABC.NET | 12 | 30.06.2009 17:11 |