Конвертировать открытый текст для выполнения шифрования 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),

Другие вопросы по тегам