rsa

 
0
 
Python
ava
OzMod | 17.11.2016, 00:12
Ниже код шифрования файла


import rsa
#-------Считываю файл---
of = open(r"C:\test.txt","rb")
r = of.read()
of.close()
#------Шифрую-----
(pubkey, privkey) = rsa.newkeys(512)
mes = rsa.encrypt(r, pubkey)
#------Сохраняю шифрованную инфу обратно в файл---
of = open(r"C:\test.txt","wb")
of.write(mes)
of.close()


Теперь вопрос как его расшифровать этот файл!
Ответы (5)
ava
baldman88 | 17.11.2016, 08:43 #
Без приватного ключа, который дается в паре с публичным никак. А так все просто:

r = rsa.decrypt(mes, privkey)

Обычно ключи генерируются один раз и сохраняются. Публичный ключ отдается стороне, которая будет присылать зашифрованную информацию, а с помощью приватного она расшифровывается. Почитайте про криптосистемы с открытым ключом.
ava
OzMod | 17.11.2016, 10:40 #
baldman88,
Да, спасибо я понял!

import rsa
of = open("D:\Code.txt","rb")
message = of.read()
of.close()

(pubkey, privkey) = rsa.newkeys(512)
mes = rsa.encrypt(message, pubkey)
message = rsa.decrypt(mes, privkey)
#--------------
of = open("D:\Code.txt","wb")
of.write(mes)
of.close()

of = open("D:\Code.txt","rb")
of.read()
of.close()

of = open("D:\Code.txt","wb")
of.write(message)
of.close()

А можно шифрования и дешифрования сделать раздельно что бы при вызове одной функции файл шифровался а при вызове другой дешифровался?
ava
baldman88 | 17.11.2016, 17:09 #
Да, можно. Просто ключи нужно сгенерировать и сохранить. При запуске программы читать эти ключи и работать с ними. Нет смысла каждый раз генерировать новые ключи. Если бы Вы более подробно описали задачу, то объяснить было бы проще.
ava
OzMod | 20.11.2016, 08:36 #
baldman88, Это понятно, ключи я сохраняю но когда я их считываю у меня вылетает ошибка тима данных..
-------------------------------
ava
baldman88 | 20.11.2016, 10:49 #
Цитата (OzMod @ 20.11.2016,  08:36)
baldman88, Это понятно, ключи я сохраняю но когда я их считываю у меня вылетает ошибка тима данных..

-------------------------------

А как Вы сохраняете ключи? Случайно не как простой текст? Тогда понятно почему ошибка. Просто pubkey и privkey это объекты. И у этих объектов есть специальные функции для сохранения и восстановления ключей в текстовом виде. Вот пример:

# сохраняем
pubkey_raw_data = pubkey.save_pkcs1() 
with open("~/rsa.pub", 'w') as pub_file: 
    pub_file.write(pubkey_raw_data)

privkey_raw_data = privkey.save_pkcs1() 
with open("~/rsa.prv", 'w') as priv_file: 
    priv_file.write(privkey_raw_data)

# загружаем
with open("~/rsa.pub", 'r') as pub_file: 
    pubkey_raw_data = pub_file.read()
pubkey = rsa.PublicKey.load_pkcs1(pubkey_raw_data)

with open("~/rsa.prv", 'r') as priv_file: 
    privkey_raw_data = priv_file.read()
privkey = rsa.PrivateKey.load_pkcs1(privkey_raw_data)
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить