
This secret code system has slowly started circulating in the Lands of Mists among groups that see its value for keeping themselves and theirs safe, covering nefarious activities or sharing secrets that threaten those in power. If used correctly, its promise is to make it impossible to decipher one's communications without infiltrating or influencing the people involved.
While the code is easy to teach to those of average intelligence, it can be boring OOCly to do by hand. Let this tool do all the heavy lifting instead. To report bugs or suggest features, you can do so here.
Put the message, key phrase and one time key into the appropriate fields. If it's not the first message used for this one time key, also input the last coded message, its "^...^" label or simply where it should start being coded in the one time key. Then click "Encrypt".
Put the coded message, key phrase and one time key into the appropriate fields. Then click "Decrypt".
Those who want to exchange secret messages in dragon code first decide on an alphabet of both symbols and runes and draw out a three tiered code wheel. Each symbol and associated rune are written in two tiers and numbered in the third from 0 and up. _ means space between words and $ means continuation on the next line.
A hard to guess Key Phrase is chosen and memorized by everyone, for example: "Teddlar fingoth cakemaker". Then a new One Time Key is made. This key consists of a sequence of random symbols from the alphabet. Each symbol can be picked by throwing dice. For example, if the alphabet numbers are 0 - 60, then 8 dice can be thrown and the result subtracted by 8. If the result is over 60, then we throw again, otherwise we write the symbol corresponding to the number.
For the first Message we want to code, the Key Phrase is lined up with the start of the Message. To find the coded symbol for each pair of symbols from the Key Phrase and Message, we first find the Message symbol on the code wheel, then move to the right along the wheel a number of times equal to the number associated with the Key Phrase symbol. To cover the whole Message, the Key Phrase is used again and again until all coded symbols are found and written as the Key Phrase Coded Message. Next we line the whole One Time Key up with the Key Phrase Coded Message and get the final Coded Message in the same way, except the One Time Key is used only once. It must therefore be as long or longer than the message. To decipher the Coded Message to get the Message, this process is simply reversed.
The same portion of the One Time Key must not be used for more than one Message, because anyone with their hands on two Coded Messages made with the same One Time Key has some chance to figure out the One Time Key. For this reason, all subsequent Messages made with a distinct One Time Key must use the portion of it starting from where the last Message ended. At some point, the One Time Key will be just about used up, so the group must come together again to share a new One Time Key. The arrangement of that meeting can be announced with the little that is left of the One Time Key.
To track which portion of which One Time Key should be used, each One Time Key is given a three letter, random looking label at the start of it, written in the "head" between the first two horns (^), such as ^ArQ^. Each Coded Message coded is also has a head, for example ^ArQ24-60^, where 24 is where the Coded Message starts in the One Time Key "ArQ" and where 60 is where the next Message should start.
The heads of the Coded Messages are also coded with just the Key Phrase to make it harder to figure out whether two Coded Messages relate to eachother. This is done by first noting the number up against the right horn, then the digits are coded with the Key Phrase in turn. What is left to use of the Key Phrase after coding the digits forms a new Phrase. Subtract the length of this Phrase from the noted horn number from before as much as you can without going below 0. The result is the Start Position. Code the One Time Key label from the Start Position in the new Phrase. Continue from the start of the new Phrase if you go beyond it. Reverse this process to decode the head.
To start coded messaging with a new person, one must: