Автор: morgan18 (06.12.2011 в 18:52)
Задала мне училка написать программку на VC++, которая зашифровывает и расшифровывает строку. Так как я ленивый и пишу мало, то возникла куча вопросов.
1. При шифровании данные заносятся в текстовый файл(например строку crypt зашифровало так: 57 4 88 70 51), как считать из файла эти числа, чтобы расшифровать???
2. Как расшифрованое число перевести в символ(из символьного я делал так int(text[i]))?
3. И наверное самое главное(но не обязательно), что меня бесило это большие числа. Нарыл я где-то функцию, которая возводит в степень и берет остаток по модулю, но не врублюсь каким макаром она работает. Если не сложно, то растолкуйте
//a^m % m
int modpow(int a, unsigned long long n, int m) {
if (n == 1)
return a % m;
unsigned long long z;
z = modpow(a, n / 2, m);
z = (z * z) % m;
if (n % 2 == 1)
z = (z * a) % m;
return (int)z;
}
|
Сам алгоритм подробно рассказан
habrahabr_ru/blogs/infosecurity/49634/ или paveldvlip_ru/algorithms/rsa.html