Небольшой вопрос про RSA
Напиши авторам кода, делов-то?
А при дешифровке данные обезаются до нужного размера, что б в конце не было мусора.
Дисклаймер: Я Си не знаю и прогу читал по диагонали.
int FileSize(char * fn)Забей. Код, который использует подобную функцию для того, чтобы узнать длину файла, не может быть прямым
{
FILE * f = fopen(fn, "r");
int d;
int size = 0;
while (!feof(f size += fread(&d, 1, 4, f);
fclose(f);
return size;
}

Реально дело в том, что тебе нужно считать число, меньшее по модулю чем n (и n не есть степень двойки, а число вида pq преобразовать его, а затем сохранить в файле. Поэтому они берут число, заведомо меньшее n, 31 байт, но после преобразования оно может быть уже больше, чем 31 байт, хотя меньше, чем n. Поэтому и сохраняют в 32 байта.
А вообще, сам такой подход неправильный, это скорее демонстрационный пример. Нормальные системы используют двухуровневые системы, когда через RSA шифруется случайный ключ для симметричного алгоритма.
Оставить комментарий
Vasya156
Несколько вопросов про сам алгоритм кодирования:1) Почему здесь читают именно 31 элемент?
2) Потом записывают 32?
3) Зачем нужна строчка fwrite(&Size, 4, 1, cf); ?
Соответствующие строчки подкреплены комментариями. (Здесь используется проект BigInt для работы с большими целыми числами).