В «настоящих» криптографических программах генерация ключей — дело более чем ответственное. Во-первых, выбор действительно случайных чисел — это вам не rand() какое-нибудь. Во-вторых, очень уж ресурсоёмкая операция — проверка числа на простоту.
Мы поступим просто: простые числа будем брать с потолка, а вычислять e и d будем «в лоб», обыкновенным перебором. Итак, запускаем bc и переносим фрагмент кода, нужный нам для генерации ключей:
Как пользоваться функцией keygen(), легко понять из исходного кода: надо определить переменные p и q, затем вызвать эту функцию, которая определит переменные n, e и d (разумеется, только если их удалось найти).

В качестве (p, q) я выбрал (127, 401). Соответственно, я получил открытый ключ (50927, 11) и закрытый ключ (50927, 27491). В последующих примерах я буду использовать именно эту пару ключей.
Что же дальше? Дальше мы эти ключи применим для шифрования.