Сейчас на форуме: zds, UniSoft, ManHunter (+5 невидимых)

 eXeL@B —› Программирование —› fread из бинарного файла блоками по 64 байта
Посл.ответ Сообщение

Ранг: 67.4 (постоянный), 6thx
Активность: 0.050
Статус: Участник

Создано: 28 декабря 2011 17:53 · Поправил: Kiev78
· Личное сообщение · #1

---




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 28 декабря 2011 17:58
· Личное сообщение · #2

bdConvFromOctets - большое число с массива байт
bdConvToOctets - массива байт с большого числа

-----
Лучше быть одиноким, но свободным © $me




Ранг: 67.4 (постоянный), 6thx
Активность: 0.050
Статус: Участник

Создано: 28 декабря 2011 18:33 · Поправил: Kiev78
· Личное сообщение · #3

---




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 28 декабря 2011 19:17 · Поправил: BoRoV
· Личное сообщение · #4

Ну можно и так.

-----
Лучше быть одиноким, но свободным © $me




Ранг: 85.4 (постоянный), 51thx
Активность: 0.090
Статус: Участник

Создано: 29 декабря 2011 17:27 · Поправил: drone
· Личное сообщение · #5

bignum из polarssl выдерни, он там маленький, удобный и ничего лишнего

Code:
  1.  
  2.          HANDLE hFileRead,hFileWrite;
  3.          DWORD hSize,hRounds,hBound;
  4.          DWORD hReaded,hWritten;
  5.          BYTE hBuffer[64];
  6.  
  7.          mpi B1, B2, B3, B4;
  8.  
  9.          mpi_init(&BX);
  10.          mpi_init(&BE);
  11.          mpi_init(&BN);
  12.          
  13.          mpi_lset(&BE,0x0DEADBEEF);
  14.          mpi_lset(&BN,0x0BADCODE);
  15.  
  16.          hFileRead = CreateFile(hFilePathRead,GENERIC_READ|GENERIC_WRITE,GENERIC_READ,0,OPEN_EXISTING,0,0);
  17.          hFileWrite = CreateFile(hFilePathWrite,GENERIC_READ|GENERIC_WRITE,GENERIC_READ,0,OPEN_EXISTING,0,0);
  18.          hFileSize = GetFileSize(hFileRead,0);
  19.          hRounds = hFileSize / 64;
  20.          hBound = hFileSize % 64;
  21.          while(hRounds)
  22.          {
  23.                  ReadFile(hFileRead,hBuffer,64,&hReaded,0);
  24.                  // X = A^E mod N
  25.                  mpi_exp_mod(BX,hBuffer,BE,BN);
  26.                  WriteFile(hFileWrite,hBuffer,64,&hWritten,0);
  27.                  hRounds--;
  28.          }
  29.          ReadFile(hFileRead,hBuffer,hBound,&hReaded,0);
  30.          WriteFile(hFileWrite,hBuffer,hBound,&hWritten,0);
  31.          CloseHandle(hFileRead);
  32.          CloseHandle(hFileWrite);
  33.  
  34.          mpi_free(&BX);
  35.          mpi_free(&BE);
  36.          mpi_free(&BN);
  37.  




Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 29 декабря 2011 18:13 · Поправил: Veliant
· Личное сообщение · #6

Code:
  1. char* li = "c:\Lic.bin"; // В обоих строках не хватает экранирующего слэша
  2. char* lo = "c:\Lic_encrypted.bin"; // P.S. Их парсер форума кушает
  3. ..
  4. int tmp = fread((void *)&src, sizeof(BIGD), 1, fi);
  5. if(tmp==64) {
  6.   bdModExp(res, src, e, n);
  7.   fwrite((void *)&res, sizeof(BIGD), 1, fo);
  8. }




Ранг: 67.4 (постоянный), 6thx
Активность: 0.050
Статус: Участник

Создано: 30 декабря 2011 06:01 · Поправил: Kiev78
· Личное сообщение · #7

---




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 30 декабря 2011 10:21
· Личное сообщение · #8

Kiev78 пишет:
моя идея с маллоком как ни странно сработала


Почему именно маллок, а не статический массив или локальный на стеке. Идея в том, что вычитывать и преобразовывать в необходимый формат перед использованием.

А БИГД если посмотреть заголовочный файл наверняка разворачивается в указатель, потому и его размер 4 байта.

-----
127.0.0.1, sweet 127.0.0.1



 eXeL@B —› Программирование —› fread из бинарного файла блоками по 64 байта
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати