Обычно это двухэтапный процесс:
- преобразование в двоичную кодировку числа;
- преобразование двоичной кодировки в кодировку текста.
Для обоих этапов возможны несколько схем.
Для двоичного кодирования: спецификации PKCS # 1 всегда включают в себя такую, которая преобразует число в статического размера целое число , Чтобы быть точным, он описывает число в виде строки со старшим байтом октета без знака без знака. Строка октетов - это не что иное, как байтовый массив.
Теперь BigInteger.toByteArray
возвращает строку октетов с прямым порядком байтов в динамическом размере со знаком. Таким образом, вам нужно реализовать возможное изменение размера и удаление начального 00
байта в отдельном методе, который я имею в моем другом посте здесь . К счастью, вернуться к числу гораздо проще, так как реализация Java предоставляет конструктор BigInteger(int sign, byte[] value)
, который читает число без знака и пропускает начальные нулевые байты.
Наличие строки октетов стандартизированного и статического размера может быть ужасно полезно, поэтому я бы не go для любой другой схемы.
Это оставляет преобразование в и из текста. Для этого вы можете (действительно) использовать класс java.util.Base64
, который не требует особых объяснений. Единственное примечание, которое я должен сделать, - это то, что он конвертирует в ASCII byte[]
для некоторых методов, поэтому вместо него нужно использовать encodeToString(byte[] src)
.
Другой метод будет шестнадцатеричным, но так как Java не содержит шестнадцатеричный кодер для байтовых массивов в базовых классах, вместо этого я бы go для базовых 64.