Я делаю простую программу, которая берет текст, введенный в текстовое поле, и берет пароль, который находится в другом текстовом поле, затем выполняет какое-то простое шифрование и сохраняет его в файл. После этого пользователь должен иметь возможность снова открыть файл и предоставить пароль, который использовался для его шифрования, и он должен выплевывать исходный текст.
Прямо сейчас я беру струну. Разделите его на массив символов, затем сделайте то же самое для пароля. После этого я беру пароль, преобразую все эти символы в целые, нахожу среднее значение для всех из них и использую его как смещение символов в исходном тексте. Вроде как:
textChars[1]= (char)((int)textChars[1]+offset);
Тогда я могу сделать обратное для зашифрованной строки:
encryptedChars[1]= (char)((int)encryptedChars[1]-offset);
Проблема в том, что символы имеют разные значения на разных платформах, поэтому иногда смещение превращает символ в какое-то безумное число (например, в отрицательное значение), которое просто превращает символ в знак вопроса.
Я посмотрел на криптографическую библиотеку в стандартном Java API, но меня смущает вопрос о том, как работает ключ, если он генерируется случайным образом при каждом запуске программы.
Что мне нужно, так это две функции, которые выглядят как String encrypt(String text,String Password)
, который выплевывает текст, зашифрованный паролем, в качестве ключа для его расшифровки, и String decrypt(String encryptedText, String Password)
, который выплевывает исходный текст (или тарабарщину, если пароль нежелательный). )
Любая помощь очень ценится, это всего лишь личный проект, поэтому мне не нужны какие-либо причудливые методы шифрования.