Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> rsa, rsa шифрование 
:(
    Опции темы
OzMod
  Дата 17.11.2016, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.1.2014

Репутация: нет
Всего: 1



Ниже код шифрования файла

Код

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()


Теперь вопрос как его расшифровать этот файл!
PM MAIL   Вверх
baldman88
Дата 17.11.2016, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 2
Всего: 7



Без приватного ключа, который дается в паре с публичным никак. А так все просто:
Код

r = rsa.decrypt(mes, privkey)

Обычно ключи генерируются один раз и сохраняются. Публичный ключ отдается стороне, которая будет присылать зашифрованную информацию, а с помощью приватного она расшифровывается. Почитайте про криптосистемы с открытым ключом.
PM MAIL   Вверх
OzMod
  Дата 17.11.2016, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.1.2014

Репутация: нет
Всего: 1



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()

А можно шифрования и дешифрования сделать раздельно что бы при вызове одной функции файл шифровался а при вызове другой дешифровался?

Это сообщение отредактировал(а) OzMod - 17.11.2016, 10:41
PM MAIL   Вверх
baldman88
Дата 17.11.2016, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 2
Всего: 7



Да, можно. Просто ключи нужно сгенерировать и сохранить. При запуске программы читать эти ключи и работать с ними. Нет смысла каждый раз генерировать новые ключи. Если бы Вы более подробно описали задачу, то объяснить было бы проще.
PM MAIL   Вверх
OzMod
  Дата 20.11.2016, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.1.2014

Репутация: нет
Всего: 1



baldman88, Это понятно, ключи я сохраняю но когда я их считываю у меня вылетает ошибка тима данных..
-------------------------------

PM MAIL   Вверх
baldman88
Дата 20.11.2016, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 2
Всего: 7



Цитата(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)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1089 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.