Encoder & Decoder
Additional Options
Explanation
There are 4 nucleotides in DNA: guanine (G), adenine (A), cytosine (C), and thymine (T). We can assign a numerical representation to each base. Such as A=0, C=1, G=2, and T=3. Then nucleotides can be thought of as a base 4 system.
Codons are made of nucleotide triplets, which means there are 64 total codons (4x4x4). Thus, codons as a whole can be thought of as a base 64 system. Wherein each codon is capable of encoding 6 bits. Similar to how each symbol in Base64 (RFC 4648 §4) encodes 6 bits.
This is the basis for Codon64. Just like in Base64, we map each 6 bits of input to a unique output symbol. The main difference is that in Codon64, the symbols are codons, which are expressed with three characters instead of one. And just like in Base64, equal signs are used for padding.
Technically, it's also valid to think of this as a base 4 system, in which A, C, G, and T are the 4 digits instead of 0, 1, 2, and 3. But Nucleotide4 doesn't roll off the tongue like Codon64.
Security
Encoding and decoding happens locally on your computer, in your browser. There is no server handling the request. This means that your message is never sent over the internet unencrypted. It's never sent over the internet at all for that matter. Don't trust me? This project is open source. You can review the code yourself on GitHub.
That said, Codon64 should not be used for any serious applications. It is no more secure than the Vigenère cipher, which served as the basis for how the password works in Codon64.
However, it is perfectly suitable for alternate reality games (ARGs) or other puzzle games.
Encoding, Encryption, or Steganography?
Well technically, it can be all three.
The difference between encoding and encryption often comes down to intent. If your intent is to make your message undecipherable to the watchful eye of a third party, you have an encryption. If your intent is just to change the representation of your message into a different format, then you have an encoding. For example, the Base64 encoding exists for the purpose of transmitting binary data over a communication channel that only supports text.
To my knowledge, the only "communication channel" that is restricted to A, G, C, and T is actual DNA. So if you've somehow figured out a way to create your own DNA sequence and used that to transmit your message, then you would be using Codon64 as an encoding. Also, I'd be extremely impressed and want to hear about it.
Lastly, whether this counts as steganography would depend on how you're transmitting the message. For example, you could try to pass your message off as an actual DNA sequence, or an entire genome if your message was sufficiently large. Whether that would work as a successful pretense to avoid suspicion of an encoded message will largely depend on who you are. But it would count as steganography if you successfully transmitted a message in plain sight without arising suspicion.