Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2009, 08:53   #1
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию Штрих код + Шифрование

Доброго времени суток.

Проблема следующая. Есть штрих код формата pdf417. В него засовываю строку предварительно зашифрованную компонентам
Wcrypt2. Всё хорошо печатается. Но сканер обратно считывает не все символы. т.е. считывает только A..Z , А..Я, 0..9, и доп символы типо /*-()= Всю остальную белиберду , типо ¬lч•Е‘љџp, просто не считывает...от сюда расшифровка не возможна.

Прошу помощи в выборе алгоритма шифрования ... Простая перестановка слишком легко взламывается... а Там перс данные...
т.е. нужно шифровать в рамках считывающихся символов, а их не так много. Может кто свежим взглядом посмотрит и подскажет направление.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 17.12.2009, 09:14   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
считывает только A..Z , А..Я, 0..9, и доп символы типо /*-()= Всю остальную белиберду
перевести результат работы из алфавита 0..255(все символы) в алфавит A..Z,0..9,... (читаемые символы) или его подмножество (1 байт в несколько)

как пример десятичная запись числа это алфавит 0..9
двоичная запись алфавит 0..1
английский текст из заглавных букв A..Z

при обратном чтении переводить обратно читаемые -> все
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 17.12.2009, 10:11   #3
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

не совсем мысль уловил... т.е. есть пример

ИВАНОВ*ИВАН*ИВАНОВИЧ*7502369845*ООО PROGRAMMERSFORUM.ru

в зашифрованном виде это допустим

“суяЋЈM©О*LЙMВAMЏiфџNj·‚{Б¬lч•Е‘ љџp/R

каким образом это можно перевести...таблицу соответствий делать?
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 17.12.2009, 10:38   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

BARNEY,
рекомендую не выдумывать велосипед. берите алгоритм Base64 - на выходе будет строка из английских буковок и циферок.
Реализаций Строка -> base64 и обратно - полно.

Либо, как вариант, переводите строчку в HEX вид:
C68DB95C08C5912E22
и его выдавайте в штрихкод.

минусы предложенных мною способов - увеличение длины текста (для base64 в 1.5 раза, для hex - в два раза)

p.s. кстати, очень рекомендую бесплатную библиотечку "Delphi Encryption Compendium Part I-III" (Copyright: Hagen Reddmann mailto:HaReddmann@AOL.COM)
там есть всё для шифрования, хэшей, CRC и прочей сопутствующей требухи...

Последний раз редактировалось Serge_Bliznykov; 17.12.2009 в 10:46.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.12.2009, 11:28   #5
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

минусы не важны в штрих код влазит 1500 символов я максимум буду 300 записывать.

Код:
uses EncdDecd;

// Кодирует поток в Base64
procedure EncodeStream(Input, Output: TStream);
// Декодирует поток из Base64 в нормальный вид
procedure DecodeStream(Input, Output: TStream);
// Кодирует строку в Base64
function  EncodeString(const Input: string): string;
// Декодирует строку из Base64 в нормальный вид
function  DecodeString(const Input: string): string;
всё хорошо, а по ключу как то это можно?
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)

Последний раз редактировалось BARNEY; 17.12.2009 в 11:38.
BARNEY вне форума Ответить с цитированием
Старый 17.12.2009, 11:45   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
всё хорошо а по ключу как то это можно?
Вы имеете в виду - шифровать?!
этим алгоритмом нет, нельзя. Это просто изменяет формат представления. Но ничего НЕ ШИФРУЕТ!

Для шифрации нужно использовать другие методы/функции/процедуры..
впрочем, я так понял, что шифрацию Вы уже делаете...
Цитата:
строку предварительно зашифрованную компонентам Wcrypt2
ну, если он Вас устраивает - им и шифруйте.
А результат шифрации преобазуйте в BASE64 и выдавайте в открытый доступ (в штрихкод) - получить бинарную строчку из него будет несложно, а вот получить исходную строку можно будет только через ДЕШИФРАЦИЮ! что Вам и нужно...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.12.2009, 11:56   #7
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

облом, корректно передать зашифрованную строку не удалось, почему то из DecodeString(const Input: string) получаться чушь


т.е.
a:= EncodeString( “суяЋЈM©О*LЙMВAMЏiфџNj·‚{Б¬lч•Е‘ љџp/R)
b:= DecodeString(a);

и в итоге a<>b

попробую сделать перестановку.... и добавление random значений в строку Base64.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)

Последний раз редактировалось BARNEY; 17.12.2009 в 12:24.
BARNEY вне форума Ответить с цитированием
Старый 17.12.2009, 12:56   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
a:= EncodeString( “суяЋЈM©О*LЙMВAMЏiфџNj·‚{Б¬lч•Е‘ љџp/R)
примерчик кода со строчкой, которая кодируется/декодируется неверно запакуйте и выложите... посмотрим, что не так то..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.12.2009, 13:44   #9
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

нашёл грабли. а после скана , и преобразование в строку получается... на на какой стадии косяк пока не понял

mдЮb*&qqЉx–иС>Ц{kџ>/њЌџъaгЖСы1…О.™сшyqQф€Ёт'МЪ
Изображения
Тип файла: jpg текст.JPG (179.8 Кб, 135 просмотров)
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)

Последний раз редактировалось mihali4; 17.12.2009 в 17:19.
BARNEY вне форума Ответить с цитированием
Старый 17.12.2009, 13:50   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию пример реализации

вот, посмотрите, может этот пример Вам поможет.
рекомендую подключить в uses synacode
и воспользоваться функциями
EncodeBase64( );
DecodeBase64( );
Вложения
Тип файла: rar base64dec.rar (49.7 Кб, 32 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
генерация штрих кода Oksa22 Помощь студентам 4 08.03.2010 14:27
штрих-коды в Rave yulia Компоненты Delphi 3 30.04.2009 17:52
штрих-код LOP_YH Microsoft Office Excel 1 24.04.2009 15:52
штрих код в Word merq Фриланс 9 29.06.2007 15:31