os.system
не позволяет сохранять результаты, поэтому, если вы хотите сохранить результаты в каком-то списке или что-то работает subprocess.call
.
Предполагая, что K_1 и K_2 являются допустимыми ключами, должно существовать следующее:
gcd(K_1, φ(φ(N))=1
и gcd(K_2, φ(N))=1
где φ
- функция Эйлера.
Учитывая это, мы знаем, что K_1 и K_2 должны быть нечетными . С информацией о том, что эти ключи отличаются только на 1 бит, мы знаем, что gcd(K_1, K_2)=1
. Это означает, что существует r s
, такой как rK_1 + sK_2 = 1
(определение gcd
).
Мы знаем, что C_1 = E(M,K_1)
и C_2 = E(M,K_2)
.
Давайте умножим C_1^r
на C_2^s
и посмотрим, что получим:
C_1^r * C_2^s = (M^K_1)^r * (M^K_2)^s = M^(rK_1 + sK_2) = M^1 = M
Мы нашли оригинальное сообщение M.