If you can't save the original string, your procedure has to have some kind of a known key so that it's reversible. You're also concerned about the amount of information added to the string, but you don't care about it being particularly hard to decode. I guess you're transmitting the string over the network.
My suggestion is this: use a Cæsar cipher. ROT-13 is the most famous example. Every character in the set of possible input characters is lined up, and that list is paired with another in the same order, but with its start point shifted. The second list provides the output for each character. E.g.,
Original: A B C D E ...
Encoded: F G H I J ...
(Don't forget punctuation!)
Your "Hello, world!"
might come out something like this: "Mjqqt; Btwqi&"
.
You can thus transmit the key easily by prepending the encoding for 'A' to the string: "FMjqqt; Btwqi&"
, which is only one extra character. This provides no meaningful security whatsoever -- people solve these things over breakfast -- but it does look like gibberish at a glance.