By itself netcat doesn't have encryption or authentication controls so while the traffic could be encrypted via OpenSSL or GnuPG with some clever piping and a bit if loops on the listening side, if you're on an untrustworthy network you might lose the race-condition to read using it and netcat doesn't allow multiple clients without clever scripting... but I'm not here to bash a tool but instead notify you of a Bash tool ;-)
Note it's very experimental and you should really check out the Travis-CI build log to find out exactly what it does, hint open a second window/tab and follow along with the travis.yml enabled scripts to see every working/tested feature so far developed.
Second hint, the following command examples are better in my experience with encrypting random strings.
Var_input="$@"
Var_gpg_opts="--armor --batch --no-tty --recipient user@host.domain --encrypt"
Var_log_file="${PWD}/output.enc
## Output to terminal
cat <<<"${Var_input}" | gpg ${Var_gpg_opts}
## Save output to file
cat <<<"${Var_input}" | gpg ${Var_gpg_opts} >> "${Var_log_file}"
However, decryption of multi-armored output file is a bit trickier... so here's the link to the script written for that because it's a bit too long to post here.
echo message | zip -e | nc $IP 1234
on one side, andnc -l 1234 | unzip
at the other end. Don't know if that will work though.