The "one-time" code is a better way to encode your paper wallet private key(s). It is somewhat similar to the famous crytographic one-time pad in terms of how you encode the plaintext.
The overall idea is to start with the private hex key, add a secret pass phrase to it, and end up with a completely different hex key. And the only way for anyone to discover the original hex key is to know the secret phrase.
The hex characters that make up the private hex key, and the alphabetical characters that make up the secret phrase, are paired together. Then each character is changed into a simple number using Table 1 and Table 2 below. For each pair, the numbers are added together to give a total. Each total is then translated into the equivalent hex number. Look at the example here to see how this works.
Table 1: Hex characters <--> Regular numbers0 (see below)
1 <--> 1 or 17 or 33
2 <--> 2 or 18 or 34
3 <--> 3 or 19 or 35
4 <--> 4 or 20 or 36
5 <--> 5 or 21 or 37
6 <--> 6 or 22 or 38
7 <--> 7 or 23 or 39
8 <--> 8 or 24 or 40
9 <--> 9 or 25 or 41
0 <--> 10 or 26 or 42
A <--> 11 or 27
B <--> 12 or 28
C <--> 13 or 29
D <--> 14 or 30
E <--> 15 or 31
F <--> 16 or 32
Table 2: Alphabetical characters --> Regular numbersspace = 0 | a = 1 | b = 2 | c = 3 | d = 4 | e = 5 | f = 6 | g = 7 | h = 8 | i = 9 | j = 10 | k = 11 | l = 12 | m = 13 | n = 14 | o = 15 | p = 16 | q = 17 | r = 18 | s = 19 | t = 20 | u = 21 | v = 22 | w = 23 | x = 24 | y = 25 | z = 26 |
There shouldn't be any confusion among the O, 0, l, I and 1. The hex key letters stay in upper case, and the pass phrase letters stay in lower case.
Example:EncodingIn detail, a private hex key fragment "...C09F3..." being encoded by the secret phrase "...gavin..." into "...4AE92..." follows:
1. Using Table 1, original hex character "C" is equivalent to 13. From Table 2, secret phrase character "g" is the 7th letter of the alphabet. Adding 13 and 7 gives 20. Using Table 1, 20 translates to the Hex character "4".
2. Using Table 1, original hex character "0" is equivalent to 10 (not 0). From Table 2, secret phrase character "a" is the 1st letter of the alphabet. Adding 10 and 1 gives 11. Using Table 1, 11 translates to the Hex character "A".
3. Using Table 1, original hex character "9" is equivalent to 9. From Table 2, secret phrase character "v" is the 22nd letter of the alphabet. Adding 9 and 22 gives 31. Using Table 1, 31 translates to the Hex character "E".
4. Using Table 1, original hex character "F" is equivalent to 16. From Table 2, secret phrase character "i" is the 9th letter of the alphabet. Adding 16 and 9 gives 25. Using Table 1, 25 translates to the Hex character "9".
5. Using Table 1, original hex character "3" is equivalent to 3. From Table 2, secret phrase character "n" is the 14th letter of the alphabet. Adding 3 and 14 gives 17. Using Table 1, 17 translates to the Hex character "1".
So the hex key fragment "...C09F3..." has been encoded by the secret phrase "...gavin..." into "...4AE91..." as intended.
To decode, one does the reverse. I'll just note the first two:
1. Using Table 1, encoded hex character "4" is equivalent to 4 or 20 or 36. From Table 2, secret phrase character "g" is the 7th letter of the alphabet. 20 minus 7 equals 13. Using Table 1, 13 translates to the original hex character "C".
2. Using Table 1, encoded hex character "A" is equivalent to 11 or 27. From Table 2, secret phrase character "a" is the 1st letter of the alphabet. 11 minus 1 equals 10. Using Table 1, 10 translates to the original hex character "0".
-----
Here is the start of an example of encoding a full private hex key.
The full private hex key "5E0F A615 F39B 0CA5 99E6 8C40 1176 3580 C323 E216 6919 D19F A53C 7C86 41F3 069F" being encoded by the secret phrase "my girlfriend jennifer harris loves to drink pink unicorn urine" into "5B3F 2E31 6521 ..." would start off like this:
5 --------------------------------------> 5
E --> 15 m = 13 15 + 13 = 28 28 --> B
0 --> 10 y = 25 10 + 25 = 35 35 --> 3
F --> 16 (space) = 0 16 + 0 = 16 16 --> F
A --> 11 g = 7 11 + 7 = 18 18 --> 2
6 --> 6 i = 9 6 + 9 = 15 15 --> E
1 --> 1 r = 18 1 + 18 = 19 19 --> 3
5 --> 5 l = 12 5 + 12 = 17 17 --> 1
etc.
To decode 5B3F 2E31 ... using "my girl..." would go like this:
5 ------------------------------------> 5
B --> 12 or 28. m = 13. 28 - 13 = 15. 15 --> E
3 --> 3 or 19 or 35. y = 25. 35 - 25 = 10. 10 --> 0
F --> 16 or 32. (space) = 0. 16 - 0 = 16. 16 --> F
2 --> 2 or 18 or 34. g = 7. 18 - 7 = 11. 11 --> A
E --> 15 or 31. i = 9. 15 - 9 = 6. 6 --> 6
3 --> 3 or 19 or 35. r = 18. 19 - 18 = 1. 1 --> 1
1 --> 1 or 17 or 33. l = 12. 17 - 12 = 5. 5 --> 5
and so on.
-----
This is all much easier to do than the full language codes I detailed earlier in this thread. However, a bitcoin private hex key encoded like this still looks like a bitcoin private key. It might be a good idea to have it look like something else.