1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
/**
* Convertit des octets en leur representation hexadecimale (base 16),
* chacun se retrouvant finalement 'non signe' et sur 2 caracteres.
*
* @see http://java.sun.com/developer/technicalArticles/Security/AES/AES_v1.html
*/
public static String byteToHex(byte[] bits) {
if (bits == null) {
return null;
}
StringBuffer hex = new StringBuffer(bits.length * 2); // encod(1_bit) => 2 digits
for (int i = 0; i < bits.length; i++) {
if (((int) bits[i] & 0xff) < 0x10) { // 0 < .. < 9
hex.append("0");
}
hex.append(Integer.toString((int) bits[i] & 0xff, 16)); // [(bit+256)%256]^16
}
return hex.toString();
}
/**
* Convertit une representation d'hexadecimaux (base 16) en octets,
* chacun étant initialement 'non signe' et sur 2 caracteres.
*
* @see http://forum.java.sun.com/thread.jspa?threadID=659432
*/
public static byte[] hexToByte(String bits) {
if ((bits == null) || (bits.length() % 2 != 0)) { // pair [xy]
return null;
}
byte[] bytes = new byte[bits.length() / 2]; // decod(2_digits) => 1 bit
for (int i = 0; i < bytes.length; i++) {
bytes[i] = (byte) Integer.parseInt(bits.substring(2 * i, 2 * i + 2), 16); // |bit|^16
}
return bytes;
} |
Partager