Я пытаюсь использовать Curve25519 в своем Android-приложении для шифрования/дешифрования ключа шифрования AES локально. Мне не нужен обмен ключами, ключевое соглашение или подписание. Почему мне нужно использовать эту конкретную кривую? Потому что мне нужно иметь возможность самостоятельно предоставлять секретный ключ и иметь возможность рассчитать его соответствие открытому ключу. Насколько мне известно, только Curve25519 делает это. Пожалуйста, поправьте меня, если я ошибаюсь.
Все реализации Curve25519 просто делают ключевое поколение, обмен ключами и подписание/проверку.
Возможно ли сделать шифрование/дешифрование данных после получения частных/открытых ключей Curve25519 или, возможно, вы можете предложить любые альтернативные кривые, соответствующие моим критериям?
Edit
Так зачем мне это? Я объясню более внимательно. Мое приложение выполняет локальное шифрование файлов, особенно фотографии. Моя цель - сделать так, чтобы пользователь мог сделать снимок без ввода пароля, а затем ввести пароль для их просмотра. Для этого мне нужно иметь возможность создавать общедоступную/закрытую пару ключей из пароля и иметь возможность воссоздать "на лету" ту же самую пару ключей, когда такой же пароль предоставляется. Поэтому при первом запуске я генерирую ключевую пару ECC из пароля и сохраняю открытый ключ на устройстве. Когда пользователь хочет принять новое приложение для фотографий, он шифрует фотографию со случайным 256-битным ключом AES, а затем шифрует этот ключ с помощью открытого открытого ключа. Когда пользователь хочет просмотреть фотографию, он/она предоставляет правильный пароль, я получаю ту же ключевую пару ECC и дешифрую ключ AES с помощью своего личного ключа, а затем я могу расшифровать фотографию с помощью AES 256.
Итак, насколько я могу получить Curve25519, я могу дать мне эту способность или есть другие альтернативы. Примеры кода в Java приветствуются!