|
|
|
Расчет контрольной цифры
|
|||
|---|---|---|---|
|
#18+
Такая проблема: есть квитанция на оплату коммунальных услуг, по данным, которые выводяться в этой квитанции необходимо расчитать некое число (набор цифр, букв, знаков), которое было бы уникально имеено для этой квитанции (контрольная сумма, хэш какой-нибудь) входные параметры: - лицевой счет - код орг-ции по справочнику - дата и время формирования - и сами суммы начислений/оплат и т.д., которые выводяться в квитанции в идале, чтобы эта цифра еще и разворачивалась обратно в суммы на квитанци Зачем это нада: появилось такое чуйство, что их начали потделывать (у меня лежит файлик, который собственно и отправляеться на печать), так вот цифтры в этом файлике резко отличаються от напечатаной квитанции, причем дата и время формирования совпадают до секунд - вот хотелось бы примудрить защиту от потделок. PS Может кто как решал другими способами, с интересом выслушаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2004, 11:14 |
|
||
|
Расчет контрольной цифры
|
|||
|---|---|---|---|
|
#18+
Vladimir M Sklyar так вот цифтры в этом файлике резко отличаються от напечатаной квитанции, причем дата и время формирования совпадают до секунд - вот хотелось бы примудрить защиту от потделок. Я считаю, что для этого подойдет какой-нибудь простой способ. Что-то типа кодировки по EAN-13 (штрих-код на товарах), где указана страна, производитель и т.д. и обязательно стоит контрольная цифра. В принципе, алгоритм ее расчета известен, его можно найти в Инете и не представляет больших трудностей его закодировать. :) Правда, алгоритм работает только в одну сторону - расчет контрольной цифры :(. Кстати, вдруг пришло в голову... Генальная идея :) ! Почему бы не хранить в качестве контрольной суммы просто 16-ричное представление знаков, составляющих информационную основу квитанции (лицевой счет,код организации,суммы...). Например, "сумма: 101.25" преобразуется в "Е1Е3АСАСА03Ф203130312Е3235" (в кодовой странице 866). Преобразование в обе стороны тривиально, и не всякий юзверь вручную сможет исправить такую "контрольную сумму"... А если учитывать еще наличие различающихся кодовых страниц для DOS и Win... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2004, 12:00 |
|
||
|
Расчет контрольной цифры
|
|||
|---|---|---|---|
|
#18+
Станислав C. Например, "сумма: 101.25" преобразуется в "Е1Е3АСАСА03Ф203130312Е3235" (в кодовой странице 866). Sorry, правильно будет: Например, "сумма: 101.25" преобразуется в "Е1Е3АСАСА03А203130312Е3235" (в кодовой странице 866). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2004, 12:01 |
|
||
|
Расчет контрольной цифры
|
|||
|---|---|---|---|
|
#18+
Для такой маленькой суммы такой страшный код а если таких сумм 5 - 10, то тока код на всю квитанцию будет :) По поводу EAN-13 - пошел искать, а там видно будет (сам штрих код мне не нужен, а вот цифры) Posted via ActualForum NNTP Server 1.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2004, 12:33 |
|
||
|
Расчет контрольной цифры
|
|||
|---|---|---|---|
|
#18+
Для Ваших целей вполне может подойти функция SYS(2007) - Checksum Value. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2004, 18:17 |
|
||
|
Расчет контрольной цифры
|
|||
|---|---|---|---|
|
#18+
А те, которые подделывают, они слепые... и не смогут. От подделки ЭТО не как не спасает. Квитанция оплачена в банке - раз в день, банковский робот выгружает вам операции в "банк-клиент", вы тянете это в свою бухгалтерию. Освобождаете человека, который наверняка вобьет не то, не туда, не тогда! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2006, 08:55 |
|
||
|
Расчет контрольной цифры
|
|||
|---|---|---|---|
|
#18+
Vladimir M SklyarТакая проблема: необходимо расчитать некое число (набор цифр, букв, знаков), которое было бы уникально имеено для этой квитанции (контрольная сумма, хэш какой-нибудь)... Я бы посмотрел в сторону алгоритма Blue Fish - он выдает каждый раз новое выражение хэша для одной и той-же суммы. Кроме того, подставив обратно имеющиеся значения - он правильно говорит было оно изменено или нет... Естественно, что надо при расчете добавлять свой пароль, чтобы злоумышленники не подделали его + фамилия плательщика+ еще то, что Вам надо, что однозначно идентифицирует платеж... Хотя как правильно заметил Евгений, всегда остается человеческий фактор... На сайте UT были кажется бесплатные библиотеки и примеры по его использованию... Good luck! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2006, 10:27 |
|
||
|
Расчет контрольной цифры
|
|||
|---|---|---|---|
|
#18+
Чтобы защититься также и от "продвинутых пользователей", каждой сессии печати квитанций пусть программа ставит в соответствие произвольную строчку символов, которая также будет участвовать в вычислении контрольной суммы, но значение которой, в идеале, никому не известно. Эта строчка должна быть сохранена в БД для последующего использования. Тогда, например, функция sys(2007) от строки, конкатенированной из- уникального идентификатора квитанции, который можно прочесть на квитанции (куда входит и id сессии печати), - суммы квитанции, - и этой самой произвольной строчки символовдаст контрольное число, которое обеспечит 1/65536 гарантию от подделки. Проверка подлинности должна осуществляться кассиром, который при оплате все равно осуществляет ввод уникального идентификатора квитанции и оплачиваемой суммы. Перед фиксацией оплаты программа повторно вычисляет контрольную сумму и просит кассира сверить ее с суммой, указанной на квитанции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2006, 10:53 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=272&tid=1592242]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 323ms |

| 0 / 0 |
