There are all sorts of simple encryptions that are nearly impossible to crack, without having a large enough sampling, or without having a test program to brute-force some detectable patterns.
However, for a personal message system, this method seems adequate for intermediate use.
It would not last as a mass-applied method, due to the simplicity of the structure.
Most current encryptions use "more symbols", to represent "less symbols", which is what makes them harder to decipher. At the end of the day, a simple 1:1 bit-swap or/and bit-shift is as easy to figure out as a "G=U" decoder ring. Even when you are flip-flopping bits, "pseudo randomly", as you state.
You must also know that pseudo-random number formulas are not universal across computer systems or even computer languages. (They would have to have the exact same system and program as you, unless you make your own random number generator too.)
You may think a pseudo random number generator looks random, but none are. They are all repeating cycles of cycles of cycles. Plot the results in a linear graph, and you will easily see the frequencies that repeat. The results are always "similar", but not exactly the same. Looking at each individual result, it is hard to see.
Honestly though... Encryption is the same. They just use larger "prime numbers" for the cycle factor. So the frequencies are almost unplottable, for human observation.
But that is still the biggest flaw... They are a loop. So there will always be a collision at the point which the numbers roll-over. After one digit past the prime number, where the result becomes a factor of that prime number now. That is the point where it doesn't matter what your original key is, because there are infinite collisions worth of keys that also decipher the encryption.
Which rolls back to your "key" to decipher yours... Yes, your single key may look fancy... But, at what point does your cycle repeat, and another key will result in the same decrypted output. Find that, and you find your first answer to how good it may potentially be.
Eg, if it's less than 400 trillion, trillion... It can be deciphered in about a week, by any simple brute force super-computer program. (With access to your code that encrypts and deciphers, as a reference.)
When a dictionary scan yields multiple words, or all words, it has essentially been cracked.
"BOB" encrypted with a larger "symbols", (1024 bits) may look like this...
"6&#+#54@&2dyah##6&278#5dtaivGfe:-#7765#++$+"
Hard to tell that it equals "BOB", and now you see another flaw of encryption... Bloating.
Now you know why a secure page takes longer to load. It's nearly 20x the size as an unencrypted web page, with 512 bit encryption.