2016-02-27 4 views
2

Я ищу, чтобы отправить файл нескольким людям, но я также хочу, чтобы они знали, что:Лучший способ создать файл, который действует как контрольная сумма и проверяет отправителя?

  1. файл не был изменен, так как я послал его к ним.
  2. Они знают, что именно я отправил файл.

Я кодирую в Python, поэтому я думал о том, чтобы потянуть файл, взять хэш его и затем шифровать хэш с помощью своего личного ключа. Я бы отправил исходный файл вместе с этим новым файлом (возможно, только .txt) тому, кого хочу. Затем мои друзья могли расшифровать хэш с помощью моего открытого ключа и сравнить его с хешем, который они берут из исходного файла. Я бы хотел использовать что-то хотя бы на уровне SHA-256. Я не хочу использовать MD5 или SHA-1.

Примечание. Исходный файл, который я отправляю, не обязательно должен быть зашифрован, просто ищет целостность и неотказуемость.

Будет ли это соответствовать двум требованиям выше? И есть ли простой способ реализовать это в Python?

+0

Я бы рекомендовал использовать существующее решение для шифрования. Например, PGP. Конечно, вы можете взаимодействовать с PGP через Python. (https://pythonhosted.org/python-gnupg/) –

+0

Как вы собираетесь отправить файл? Эл. адрес? Многие почтовые клиенты уже имеют криптографические подписи в качестве встроенной функции. –

+0

Вы изобретаете криптографическую подпись. Если вы использовали GPG, например, вы можете сделать 'gpg --sign myfile.txt'. –

ответ

1

Я думал о потянув в файле, с хэш, а потом шифровать хэш с моим частным ключом

Это именно то, что мы обычно называем подписания или цифровой подписи, который соответствует вашим двум требованиям.

Будет ли это соответствовать двум требованиям выше?

Да. Подписание сообщения не мешает ему манипулировать. Это приводит к тому, что является недопустимым для генерации сигнатуры для управляемых сообщений без закрытого ключа.

И есть ли простой способ реализовать это в Python?

Уверенный, pyCrypto поддерживает RSA и DSA. Вы должны попробовать ed25519, хотя его подписи меньше.

 Смежные вопросы

  • Нет связанных вопросов^_^