The key will be storing binary or hexidecimal data, which does not necessarily directly convert into readable characters; so when you try and view it as text the program will do its best effort to convert it into a string using the default character set for the machine (1 character generally is 1 byte) which will lead to gibberish since the data was not input in character form.
Binary and Byte data can represent any number of things depending on how you decide to interperet it; for example if you take a random 32-bit integer, lets say 1,342,749 as binary this would be 00000000 00010100 01111101 00011101 which as hexidecimal would be 0x00147D1D now if we try to read this as characters using the Ascii character set we would get ??}? (more exactly, NUL - DC4 - } - GS); which appears to be complete gibberish.
Low level data, especially when stored at bit and byte level has no garenttee that it is viewable as characters, but this does not make the data gibberish by any means - quite often it is most efficent/secure/etc for programs to save data directly in bit/byte formats; specifcally for example compression techniques.