Как зашифровать текстовый файл после получения открытого ключа, совместно используемого клиентом / сервером в Java - PullRequest
0 голосов
/ 29 октября 2018

Я наконец понял, как выполнить обмен ключами Диффи-Хеллмана в Java, теперь проблема в том, что мне нужно зашифровать текстовый файл с использованием общего ключа. Я не знаю, как вообще начать это делать. TXT-файл представляет собой просто целые числа 1 2 3 4 5 каждый в новой строке. Есть ли простая строка кода, о которой я не знаю, которая может выполнять эту функцию? Общий ключ, который у меня есть, 18.0.

1 Ответ

0 голосов
/ 29 октября 2018

зашифровать текстовый файл после получения открытого ключа, совместно используемого клиентом / сервером в Java

Предположим, вы работаете над учебным или игрушечным проектом, иначе нет смысла (пере) изобретать собственное безопасное общение. Если вы хотите серьезно относиться к безопасности, просто используйте TLS / SSL (опционально с двухсторонней аутентификацией клиента ssl) для онлайн-передачи контента.

Я действительно надеюсь, что ради себя вы просто учитесь или играете с этим.

для шифрования текстового файла с использованием общего ключа. Я не знаю, как вообще начать это делать.

Для шифрования в покое (шифрование самого файла) - исходя из вопроса, что отправитель и получатель имеют свои собственные пары ключей.

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

Я сделал несколько заметок о шифровании для себя, вы можете черпать вдохновение.

Общий ключ, который у меня есть, 18.0.

По-видимому, вы используете недостаточно длинные или недостаточно случайные открытые ключи. Симметричные шифры требуют ключей фиксированной длины (например, AES требует 128, 192 или 256-битных ключей). Вы можете генерировать более длинные ключи, используя любую функцию или ключ хеширования. Если вы хотите использовать двустороннюю связь, вам нужен отдельный ключ для каждого направления.

Независимо от этого - начальное значение короткого ключа (маленький общий ключ, короткие открытые ключи) было бы возможно для перебора. Есть много способов, как вы можете выстрелить себе в ногу, когда имеете дело с криптографией, поэтому по возможности используйте какой-нибудь промышленный стандарт (например, TLS).

...