Покрытие от String до Hex в Java - PullRequest
       12

Покрытие от String до Hex в Java

0 голосов
/ 18 апреля 2019

Как мы можем преобразовать из строки в шестнадцатеричный код в java

Этот код является частью алгоритма шифрования AES, у меня есть этот метод, который возвращает зашифрованное значение в виде: String Мне нужно, чтобы он вместо этого возвращал результат в виде Hex.

public static String encrypt(String Data) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {

    Key key = generateKey();
    Cipher c = Cipher.getInstance(ALGO);
    c.init(Cipher.ENCRYPT_MODE, key);
    byte[] encVal = c.doFinal(Data.getBytes());

    String encryptedValue = new String( Base64.getEncoder().encode(encVal) ) ;
    return encryptedValue;
}

1 Ответ

0 голосов
/ 18 апреля 2019

Я бы предложил что-то вроде этого:

public static String encrypt(String Data) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
    Key key = generateKey();
    Cipher c = Cipher.getInstance(ALGO);
    c.init(Cipher.ENCRYPT_MODE, key);
    byte[] encVal = c.doFinal(Data.getBytes());

    // simply store the encoded byte array here
    byte[] bytes = Base64.getEncoder().encode(encVal);

    // loop over the bytes and append each byte as hex string
    StringBuilder sb = new StringBuilder(bytes.length * 2);
    for(byte b : bytes)
       sb.append(String.format("%02x", b));
    return sb.toString();
}

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

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