|
|
|
Подскажите по поводу закодированного идентификатора...
|
|||
|---|---|---|---|
|
#18+
Привет! Вобщем задали такую задачу - нужно кодировать идентификатор документа, т.е. нужно создавать некий цифро-кириллический код, в котором бы содержалась дата создания документа, номер документа, идентификатор создателя и еще несколько идентификаторов - типа номер склада, отдела и тп. Заказчик просит чтобы код на выходе был небольшим, и был обратимым - т.е. проверяющий вводит код, а ему - все закоденные туда данные. Он, к примеру, сверяет и видит: накладная - подделка или нет. Подскажите, мож кто такое решал уже. спасибо. вфп9 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2008, 00:42 |
|
||
|
Подскажите по поводу закодированного идентификатора...
|
|||
|---|---|---|---|
|
#18+
авторподделка или нет Для этого обычно используют алгоритмы хэширования (crc32, sha, md5 и т.д.), если код на выходе нужен покороче, то возьмите crc32. Но все хэш-функции НЕобратимы! Из кода невозможно получить данные. Что касается желания вашего заказчика по поводу обратимости: в любой информации конечно есть какая-то избыточность, но не до такой степени, чтобы кучу идентификаторов сжать без потерь до одного. Подумайте сами, если бы такое было возможно, то зачем тогда сами данные, если можно хранить только такой чудо-идентификатор :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2008, 16:06 |
|
||
|
Подскажите по поводу закодированного идентификатора...
|
|||
|---|---|---|---|
|
#18+
да я-то ему первое что предложил это хэш, но знал что он необратим и его предупредил. И так же заметил, что при ТАКОМ кол-ве исходных данных маленький ключ никак не получается. тем не менее у нас в городе есть СберБанки и когда у них плтишь квартплату, то в конце квинтанции очень похожий код печатается и всегда уникальный. У их прога написана на ФПД, но доступа ни к ней непосредственно, ни тем более к исходникам нет. Вот этот код как раз защищает от подделок этих квитанций. Мне не нужен именно их алго, мне свой подобный нужен. Вот например коды квитанций: 1л09щннтпкшсббх2ж9д4щи84 3ссзгсдщск7860щощ80чмйи3 ййо2аж9ткко84щинрол9рб5у и тд, причем квитанции идут подряд, т.е. на одном листе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2008, 00:23 |
|
||
|
Подскажите по поводу закодированного идентификатора...
|
|||
|---|---|---|---|
|
#18+
Идентификаторы внутри цифровые или буквы есть? Буквы и даты к цифрам привести можно. 1. выстраиваешь все в строку 31125102357533302221244400255 - где каждый идентификатор: кол-во цифр и значение 112 => "3112", 251 => "51" и т.д. 2. делаешь какое-нибудь обратимое преобразование, например перетасовываешь цифры в хитром порядке или еще как. По сути этот алгоритм и даст криптостойкость твоему шифрованию. Можешь открытый-закрытый ключ использовать, но тогда длинный код в итоге будет. 3. Для уменьшения длины полученного переводишь частями в другую систему счисления например 62-х ричную (0-9, A-Z, a-z). Т.к. фокс точно работает только с 15-разрядными числами, то берешь 15 знаков. Например "311251023575333" Переводишь обрезанное в 62-х ричную систему счисления: 311251023575333 => "1QNkQRL09" запоминаешь кол-во знаков + строка => "91QNkQRL09" больше 9-ти не будет. Можешь "-" ставить. 4. Берешь следующие 15 и к п.3 Раскодировать в обратном порядке. Когда-то делал конвертацию 62-10: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Можешь генератор случайных чисел задействовать для добавления ненужной инфы, которая разнообразит даже одинаковые записи. Например брать не 15 а 14 и первый знак случайное число от 1-9. Обязательно первый, т.е. старший разряд. Контрольный разряд добавь, чтобы ошибки оператора отлавливать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2008, 16:05 |
|
||
|
Подскажите по поводу закодированного идентификатора...
|
|||
|---|---|---|---|
|
#18+
Можно не 15 брать, а прикинуть чтобы примерно равные части получились. Например у тебя 38 всего, т.е. 15+15+8 => 13+13+12 и записывать через "-". Руками вводить удобней будет с "-" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2008, 16:10 |
|
||
|
Подскажите по поводу закодированного идентификатора...
|
|||
|---|---|---|---|
|
#18+
Большое спасибо! буду переваривать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2008, 16:15 |
|
||
|
Подскажите по поводу закодированного идентификатора...
|
|||
|---|---|---|---|
|
#18+
Еще подумал: 1. Контрольный разряд не обязательно он уже есть, когда обратно будешь преобразовывать п.1 ("3112" => 112) проверяй что нулевой длины и недостающих символов не оказалось. 2. Если руками код набирать будут, то лучше только большие русские буквы использовать, иначе SHIFT давить надо будет, что потребует больше времени для набора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2008, 16:29 |
|
||
|
Подскажите по поводу закодированного идентификатора...
|
|||
|---|---|---|---|
|
#18+
Может пригодится эта ссылка. http://]www.foxclub.ru/sol/solution181.php ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2008, 08:10 |
|
||
|
Подскажите по поводу закодированного идентификатора...
|
|||
|---|---|---|---|
|
#18+
Я тут придумал на основе предложенного кода такое дело - во-первых я не стал опираться на коды символов, я сделал иначе - создаю строку-ключ, длиной, скажем 20 уникальных символов (к примеру буквы не в алфавитном порядке), а потом нужный с помощью SUBSTR() и АТ() вытягиваю. А случайное число, можно добавить в начало (задумав его длину фиксированной), и его, скажем при кодировании к каждому числу добавить, ну а потом отнять - вот тебе и уникальность одного и того же набора чисел! И еще такая идея есть, слизанная с системы ид. кодов - представлять дату как число в виде разницы от определенной даты. К примеру от 2к, своего д/р или д/р жены, родаков, Che Gue Varda, Ленина, короче от любой даты :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 17:49 |
|
||
|
Подскажите по поводу закодированного идентификатора...
|
|||
|---|---|---|---|
|
#18+
CTAC-KOЯ тут придумал на основе предложенного кода такое дело - во-первых я не стал опираться на коды символов... Преобразование из одной системы счисления в другу похоже осилил. А это самый эффективный способ уменьшить кол-во символов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 18:10 |
|
||
|
Подскажите по поводу закодированного идентификатора...
|
|||
|---|---|---|---|
|
#18+
Dima TПреобразование из одной системы счисления в другу похоже осилил. А это самый эффективный способ уменьшить кол-во символов. Опечатка вышла ... хотел не осилил написать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 18:32 |
|
||
|
Подскажите по поводу закодированного идентификатора...
|
|||
|---|---|---|---|
|
#18+
CTAC-KO В сбербанке том наверняка банальное преобразование цифр в 10+33=43-ричную систему исчисления ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 10:39 |
|
||
|
Подскажите по поводу закодированного идентификатора...
|
|||
|---|---|---|---|
|
#18+
CTAC-KOПривет! Вобщем задали такую задачу - нужно кодировать идентификатор документа, т.е. нужно создавать некий цифро-кириллический код, в котором бы содержалась дата создания документа, номер документа, идентификатор создателя и еще несколько идентификаторов - типа номер склада, отдела и тп. Заказчик просит чтобы код на выходе был небольшим, и был обратимым - т.е. проверяющий вводит код, а ему - все закоденные туда данные. Он, к примеру, сверяет и видит: накладная - подделка или нет. Подскажите, мож кто такое решал уже. спасибо. вфп9 А штрих-кодирование не подойдет? Там обычно предусмотрен контрольный разряд (или даже два) для контроля правильности формирования кода... Инфы по различным штрих-кодам в Инете много... Кроме того, можно сделать двумерное штрих-кодирование (некоторые банки используют, выглядит как "размазанная" квадратная печать; сейчас вроде на акцизных марках такое тоже практикуется)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 11:28 |
|
||
|
Подскажите по поводу закодированного идентификатора...
|
|||
|---|---|---|---|
|
#18+
Dima T Dima TПреобразование из одной системы счисления в другу похоже осилил. А это самый эффективный способ уменьшить кол-во символов. Опечатка вышла ... хотел не осилил написать ну не знаю, может просто непонятно выразилсо... система моя, такая же по сути как и предложенная Вами. Вы же каждое число из своей хх-ричной системы представляете в виде символа, так ведь? В этом же и суть, т.е. буква "Я" у Вас будет числом 43. Ну вот и я точно так же. Только в Вашем случае идет по ходу acsii, а в моем - нет, т.е. 43 у меня может быть буква "И". Кроме всего прочего, благодаря такой системе я могу кастомизить такие вещи как "ш" и "щ" - похожи по виду, правда? А зачем путаница в недогляделках? А я взял и букву "щ" исключил - просто стер ее из строки. То же самое с "ъ/ь". Ну меньше разрядов вышло, не 43, а 39 (и/й, и е/ё), за то исключаю возможные ашипки (typo). Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2008, 09:47 |
|
||
|
Подскажите по поводу закодированного идентификатора...
|
|||
|---|---|---|---|
|
#18+
CTAC-KO[quot Dima T]ну не знаю, может просто непонятно выразилсо... Похоже на то. Значит осилил :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2008, 17:10 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=35250300&tid=1587842]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 293ms |

| 0 / 0 |
