Строковое шифрование только с числами? - PullRequest
0 голосов
/ 31 декабря 2010

Предположим, что ваш банковский служащий дает вам произвольный пароль, например hel34/hjal0@#, и вы не сможете вспомнить его, не записав его на бумаге.Дилемма: вы никогда не пишете пароли на бумаге.Таким образом, вы пытаетесь изобрести карту шифрования «один-к-одному», в которой вы пишете только ключ к бумаге, только цифры и оставляете все ненужное на свой сервер.Конечно, пароль может состоять из произвольных вещей.

mvds имеет правильную идею, чтобы изменить базу. Евгений заметил ошибку, поэтому карта «один к одному» должна выглядеть так:

prime1*prime2*...*primeN <----- encoding -------> String

Ответы [ 2 ]

2 голосов
/ 31 декабря 2010

Я не знаю, действительно ли я понимаю вашу проблему, но вы могли бы видеть ваш ввод как число base-62 (26 + 26 + 10), которое вы могли бы прочитать как целое число, а затем обработать его любым способомтебе нравится.Затем преобразуйте результат обратно в свой пользовательский формат base-62.

Так, например, ваш диапазон цифр равен [0-9a-zA-Z], поэтому 0 = 0 десятичных знаков и Z = 61 десятичных знаков, а 10будет 62 десятичных.

Тогда 9aZ будет 9 * 62 * 62 + 10 * 62 + 61 = 35277 десятичных, которые имеют простые факторы 3 * 11 * 1069.

Преобразование ихобратно приведет к: 9aZ = 3 * b * hg

0 голосов
/ 01 января 2011

Прежде всего, ваш числовой код не может быть короче, чем пароль: более короткий пароль снижает уровень защиты.Таким образом, вам нужно сохранить пароль в целости и сохранности (или просто кодировать его) или сделать его еще дольше.

Говоря о кодировке, вы можете использовать кодировку BASE10 или BASE16.С кодировкой Base16 у вас есть 2 символа на исходный символ (если мы останемся в кодировке ASCII), с кодировкой Base10 длина будет разной, и для обеспечения правильного декодирования вы должны использовать 3 символа на исходный символ ASCII.

...