Использование byte[] в качестве ключа в HashMap проблематично из-за особенностей работы методов equals() и hashCode() для массивов.
По умолчанию, equals() для массивов сравнивает ссылки, а не содержимое. Два массива байтов с одинаковым содержимым, но находящиеся в разных областях памяти, будут считаться неравными.
Аналогично, стандартный hashCode() для массивов основан на адресе в памяти, а не на содержимом. Это приводит к тому, что два массива с одинаковым содержимым будут иметь разные хеш-коды.
В результате, при попытке получить значение из HashMap по ключу-массиву, даже если в мапе есть массив с точно таким же содержимым, методы equals() и hashCode() могут не сработать так, как ожидается, и вы получите null.
Для корректного использования массива байтов как ключа необходимо либо обернуть его в класс, который переопределяет equals() и hashCode() на основе содержимого, либо использовать классы типа ByteArrayWrapper из библиотек, предоставляющих такую функциональность. Alternatively, use a type like ByteBuffer which provides content-based equality and hashing.