Ключ будет хранить двоичные или шестнадцатеричные данные, которые не обязательно напрямую преобразуются в читаемые символы; поэтому, когда вы попытаетесь просмотреть его как текст, программа приложит все усилия, чтобы преобразовать его в строку, используя набор символов по умолчанию для машины (1 символ обычно составляет 1 байт), что приведет к бреду, так как данные не были введены в форма персонажа.
Двоичные и байтовые данные могут представлять любое количество вещей в зависимости от того, как вы решили их интерпретировать; например, если вы возьмете случайное 32-разрядное целое число, скажем, 1 342 749 в двоичном виде, это будет 00000000 00010100 01111101 00011101, что в качестве шестнадцатеричного теперь будет 0x00147D1D, если мы попытаемся прочитать это как символы, используя набор символов Ascii, мы получим ??}? (точнее, NUL - DC4 -} - GS); который кажется полным бредом.
Низкоуровневые данные, особенно когда они хранятся на уровне битов и байтов, не имеют никаких гарантий, что их можно просматривать в виде символов, но это не делает данные бесполезными - каким-либо образом - довольно часто это наиболее эффективно / безопасно / и т.д. Для программ для непосредственного сохранения данных в битовых / байтовых форматах; в частности, например, методы сжатия.