Конвертировать открытый текст для выполнения шифрования elgamal
Привет я пишу программу на Java, чтобы проверить вариант шифрования elgamal, однако моя проблема не в encryption/decryption
Сама цепочка, а вот как выполнять операции над вводом данных: текстовый файл. У меня есть текстовый файл с несколькими словами (например, содержимое может быть: "Hello world, this is a test"
) и мне нужно выполнить числовые операции над ними, как это:
ciphertext = (message * y) mod p
где y
а также p
два biginteger
, Я попробовал эту цепочку преобразования: (чтение одной строки за раз):
String-> Hexadecimal-> Десятичный
Затем выполните операцию шифрования, а затем обратное:
Decimal-> Hexadecimal-> Строка
Но это не работает все время (в настоящее время я изучаю эту проблему). фиксированный.
У меня вопрос, есть ли лучший способ сделать это? Я читал о byte array
Но я не уверен, как их использовать.
[При необходимости я могу опубликовать пример цепочки шифрования / дешифрования]
1 ответ
BigInteger имеет конструктор, принимающий байтовый массив в качестве аргумента.
Любая строка может быть преобразована в байтовый массив без потерь с использованием (например) кодировки UTF-8:
byte[] bytes = string.getBytes(StandardCharsets.UTF_8);
Объедините оба, и у вас будет простой способ превратить String в BigDecimal.
Для обратной операции используйте BigInteger.toByteArray (), а затем new String(bytes, StandardCharsets.UTF_8)
,