зашифровать текстовый файл после получения открытого ключа, совместно используемого клиентом / сервером в Java
Предположим, вы работаете над учебным или игрушечным проектом, иначе нет смысла (пере) изобретать собственное безопасное общение. Если вы хотите серьезно относиться к безопасности, просто используйте TLS / SSL (опционально с двухсторонней аутентификацией клиента ssl) для онлайн-передачи контента.
Я действительно надеюсь, что ради себя вы просто учитесь или играете с этим.
для шифрования текстового файла с использованием общего ключа. Я не знаю, как вообще начать это делать.
Для шифрования в покое (шифрование самого файла) - исходя из вопроса, что отправитель и получатель имеют свои собственные пары ключей.
Предлагаю создать случайный ключ шифрования данных для шифрования контента. Затем вы можете просто использовать открытый ключ получателя, чтобы зашифровать ключ шифрования данных и подписать хеш содержимого, используя закрытый ключ отправителя. Никогда не используйте простой (учебник) RSA, используйте пропперы.
Я сделал несколько заметок о шифровании для себя, вы можете черпать вдохновение.
Общий ключ, который у меня есть, 18.0.
По-видимому, вы используете недостаточно длинные или недостаточно случайные открытые ключи. Симметричные шифры требуют ключей фиксированной длины (например, AES требует 128, 192 или 256-битных ключей). Вы можете генерировать более длинные ключи, используя любую функцию или ключ хеширования. Если вы хотите использовать двустороннюю связь, вам нужен отдельный ключ для каждого направления.
Независимо от этого - начальное значение короткого ключа (маленький общий ключ, короткие открытые ключи) было бы возможно для перебора. Есть много способов, как вы можете выстрелить себе в ногу, когда имеете дело с криптографией, поэтому по возможности используйте какой-нибудь промышленный стандарт (например, TLS).