I have not spent so much time studying this yet, but I think I have come up with a preliminary way to solve this problem, which I will continue about:
I will create a 32-character alphabet account reference number. I divided this alphabet into 2 sets of 16 characters, optimizing the sets to minimize the likelihood that a random typo would give a letter from another set. For example, just divide the keyboard in half using the letters in the box with the corners [1], [4], [v], [z] for one set, and the other letters as others.
Then I will use the Reed-Solomon code [14, 8, 7] 16 to encode the 32-bit account number, which I first divided into eight 4-bit characters.
The received message, I go to the reference number, choosing the characters 1, 3, 5, ... from the 1st half alphabet, and the rest from the 2nd half alphabet. That way, I can โre-syncโ the reference number if I detect any changed, redundant, or missing characters.
After resynchronizing, the RS code should then allow me to correct up to 3 other typos, and if someone makes more mistakes, they deserve to run into problems with paying them ... :)
I would love to hear any comments that anyone might like about this approach.
source share