Преобразовать byte [] с отрицательным значением в String - PullRequest
0 голосов
/ 31 октября 2019

У меня есть этот байт [] = {-53, 54, -5, -89, -69, -126, -57, 36, 49, 114, -66, 67, 39, 18, 57, -40, 50, -113, 52, -113, 111, -65, -20, -127, -84, 90, -74, -47, 94, 23, 18, -36}

Как можноЯ преобразовываю это в строку? Я перепробовал много способов, но все они не работают

Я использую эту библиотеку для кодирования моей строки https://github.com/scottyab/AESCrypt-Android, есть некоторая строка кода для генерации байта []выше

private static SecretKeySpec generateKey(final String password) throws NoSuchAlgorithmException, UnsupportedEncodingException {
    final MessageDigest digest = MessageDigest.getInstance(HASH_ALGORITHM);
    byte[] bytes = password.getBytes("UTF-8");
    digest.update(bytes, 0, bytes.length);
    byte[] key = digest.digest(); //I want to convert this byte[] to String

    log("SHA-256 key ", key);

    SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
    return secretKeySpec;
}

1 Ответ

1 голос
/ 31 октября 2019

Вы должны закодировать свой байтовый массив, используя Base64.

Если вы используете Java8, Base64 уже включен в пакет java.util.

Попробуйте следующий код:

 public static void main(String args[]) throws IOException {

        byte[] b = {-53, 54, -5, -89, -69, -126, -57, 36, 49, 114, -66, 67, 39, 18, 57, -40, 50, -113, 52, -113, 111, -65, -20, -127, -84, 90, -74, -47, 94, 23, 18, -36};
         String encoded = Base64.getEncoder().encodeToString(b);
         System.out.println(encoded);

    }

Результат:

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