Я сделал что-то очень похожее. Но в моем случае это был простой код авторизации по телефону. Пользователь может позвонить по номеру, указать название своей компании и выполняемую им операцию, получить код, ввести его в приложение и затем продолжить.
Я выполнил сериализацию фрагмента данных в двоичный файл. Данные включали в себя хэшированное название компании, код операции / дату истечения срока действия, а также оставляли место для будущих требований. Затем я разбросал биты по массиву, чтобы запутать его. Затем я сопоставил каждые 5 бит двоичного массива с 32-символьным алфавитом кода авторизации (0-9, a-z, исключая I / O / Q / S для удобства чтения по телефону).
В результате получился хороший код авторизации, состоящий из 16 символов, отображаемый в виде блоков 4х4 (#### - #### - #### - ####). Его можно было легко прочитать по телефону, поскольку пользователю нужно было прослушивать только четыре символа за раз, или даже отправлять его по SMS.
Как и в случае с вашей проблемой, она не была предназначена для остановки взломщиков кода на Bletchley Park , но была достаточной, чтобы не дать обычному офисному работнику что-то сделать, не следуя процедуре компании. И, учитывая эту сферу, был очень эффективным.