[Edit to add:] There is, however, a use-case that is still valid and worth considering: using this tool to communicate messages over a “carrier signal.” I.e., if there's a place where you want to store or transmit a message, but that message is in a format that is not accepted by the channel, but PNGs are allowed, you may be able to use this tool to encode arbitrary information into PNGs such that your message can still be transmitted. However, this is a pretty limited use-case, and is very easily detected.
There are also some niceties missing that I have come to expect from command-line UX (e.g., standardized getopt-style argument handling, terminal-size awareness, etc.) which are things you pick up and start to value as you spend more time in the CLI.
Also, if you want to dive into some of the encryption and security-related work, I'd suggest starting with the excellent CryptoPals challenges [0] (a XOR cipher is one of the first things you build and then break :P).
All the best,