Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 22.04.2018
Сообщений: 26

Выполнить шифрование текстового файла методом RSA

06.02.2020, 21:44. Показов 6909. Ответов 4

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста! Вопрос "жизни и смерти". Нужно: выполнить шифрование текстового файла методом, RSA, используя в качестве p и q простые числа с разрядностью не меньшей двенадцати, выполнив условие случайности p и q для каждого нового шифрования.
Нужен код.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.02.2020, 21:44
Ответы с готовыми решениями:

Как написать шифрование RSA на python без import RSA
Нужнен код без использование RSA библиотеки. Буду блогодарен!

Шифрование бинарного(или текстового) файла методом RSA
Помогите понять, что от меня здесь требуют. Мне работать с бинарным или текстовым файлом? Какими средствами можно организовать...

Шифрование текстового файла методом Гронсфельда
доброго времени суток! помогите, пожалуйста, написать программу "из внешнего файла в формате «ТХТ» ввести текст и зашифровать/расшифровать...

4
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
06.02.2020, 22:04
Medvedica8898, советую начать с изучения вот этого
https://python-scripts.com/encryption-cryptography
0
0 / 0 / 0
Регистрация: 22.04.2018
Сообщений: 26
06.02.2020, 23:07  [ТС]
Dax, столкнулась с проблемой установки pycrypto. Выдает ошибку
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
06.02.2020, 23:10
Пример кода
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from Cryptodome.PublicKey import RSA
from Cryptodome.Cipher import AES, PKCS1_OAEP
 
code = 'nooneknows'
 
with open('encrypted_data.bin', 'rb') as fobj:
    private_key = RSA.import_key(
        open('my_rsa_key.pem').read(),
        passphrase=code
    )
 
    enc_session_key, nonce, tag, ciphertext = [
        fobj.read(x) for x in (private_key.size_in_bytes(), 16, 16, -1)
    ]
 
    cipher_rsa = PKCS1_OAEP.new(private_key)
    session_key = cipher_rsa.decrypt(enc_session_key)
 
    cipher_aes = AES.new(session_key, AES.MODE_EAX, nonce)
    data = cipher_aes.decrypt_and_verify(ciphertext, tag)
 
print(data)
1
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
07.02.2020, 04:21
Начните с выработки случайных простых p и q. Вроде бы быстро работает обычный перебор.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def is_prime(n):
    if n % 2 == 0:
        return False
    q = 3
    while q*q <= n:
        if n % q == 0:
           return False
        q += 2
    return True
 
from random import randint
 
p = randint(100000000000,1000000000000)
print(p)
while(not is_prime(p)):
    p += 1
q = randint(1000000000000,10000000000000)
print(q)
while(not is_prime(q)):
    q += 1
print(p, q)
Дальше берите описание RSA и действуйте по алгоритму. Определите, какого размера будет блок, доступный для зашифрования, сколько символов в этот блок поместится. Вытаскивайте из строки символы в восьмибитной кодировке и шифруйте блок за блоком. Для учебной задачи сойдет. Если нужно для дела, то программу нужно сильно усложнить, чтобы противостоять взлому и увеличить скорость.

Добавлено через 1 час 0 минут
Надеюсь, расширенный алгоритм Евклида умеете применять? Вот вычисление секретной экспоненты. Пример взят из Википедии (статья про RSA).
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def euclid_ext(a, b):
    if b == 0:
        return a, 1, 0
    else:
        d, x, y = euclid_ext(b, a % b)
        return d, y, x - y * (a // b)
 
p=3557
q=2579
n = p*q
phi = (p-1)*(q-1)
print(n, phi)
e = 3
gcd, d, y = euclid_ext(e, phi)
d %= phi
if d < 0:
    d += phi
open_key=(e, n)
secret_key=(d, n)
print(open_key)
print(secret_key)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.02.2020, 04:21
Помогаю со студенческими работами здесь

Шифрование текстового файла методом Вижинера
Здравствуйте! Я только недавно начал изучать программирование и столкнулся с такой задачей: Написать программу, выполняющую шифровку...

Шифрование текстового файла методом DES (Delphi -> Lazarus)
Срочно нужен перевод кода с Delphi на Lazarus под графический интерфейс. Задание такое: зашифровать текст из текстового файла методом шифра...

Шифрование текстового файла методом одиночной и двойной перестановки по ключу
Задание такое: написать программу шифрования и дешифрования текстового файла методом одиночной перестановки по ключу и методом двойной...

Осуществить шифрование/дешифрование текстового файла методом смещения кода
Задан текстовый файл. Осуществить шифрование/дешифрование информации методом смещения кода – к коду каждого считанного символа прибавляется...

Шифрование методом RSA
Есть код для шифрования методом RSA, всё работает пока значения простых чисел не превышаю 3 знака, если указать простые числа длиной более...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru