Кодировать строку в BigInteger, а затем декодировать обратно в строку - PullRequest
4 голосов
/ 29 февраля 2012

Я нашел ответ, который почти решает мою проблему: https://stackoverflow.com/a/5717191/1065546

Этот ответ демонстрирует, как кодировать BigInteger в строку, а затем обратно в BigInteger с использованием кодировок Base64, использующих кодек Apache commons-codec.

Есть ли способ кодирования метода / метода для String в BigInteger, а затем обратно в String? если так, то кто-нибудь, пожалуйста, объясните, как его использовать?

      String s = "hello world";
      System.out.println(s);

      BigInteger encoded = new BigInteger( SOME ENCODING.(s));
      System.out.println(encoded);

      String decoded = new String(SOME DECODING.(encoded));
      System.out.println(decoded);

Печать:

      hello world
      830750578058989483904581244
      hello world

(Вывод является лишь примером, и привет миру не нужно декодировать в этот BigInteger)

EDIT

Более конкретно:

Я пишу алгоритм RSA, и мне нужно преобразовать сообщение в BigInteger, чтобы я мог затем зашифровать сообщение с помощью открытого ключа (отправить сообщение), а затем расшифровать сообщение с помощью закрытого ключа и затем преобразовать число обратно в строку.

Я хотел бы получить метод преобразования, который мог бы производить наименьший BigInteger, поскольку я планировал использовать двоичный файл, пока не понял, насколько нелепым будет большое число.

1 Ответ

9 голосов
/ 29 февраля 2012

Я не понимаю, почему вы хотите пройти через сложные методы, BigInteger уже совместим с String:

// test string
String text = "Hello world!";
System.out.println("Test string = " + text);

// convert to big integer
BigInteger bigInt = new BigInteger(text.getBytes());
System.out.println(bigInt.toString());

// convert back
String textBack = new String(bigInt.toByteArray());
System.out.println("And back = " + textBack);

** Редактировать **

Но зачем вам нужен BigInteger, пока вы можете работать напрямую с байтами, как сказал DNA ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...