Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.05.2011, 18:07
sweet_lana sweet_lana вне форума
Прохожий
 
Регистрация: 08.04.2011
Адрес: Челябинск
Сообщения: 21
Версия Delphi: delphi 7
Репутация: 10
Вопрос Модули шифрования

Ребятки помоги пожалуйста! есть готовая программа. да вот препод говорит сделать надо шифрование данных перед записью в БД Access. как я понимаю еще надо и дешифрование тогда, когда из БД данные вытаскиваю. Как можно это все реализовать. Честно, не представляю как это будет выглядеть. Говорили про какие то модули шифрования. искала в инете, да только похожего примера не нашла. Базу подключала через ADO.
Ответить с цитированием
  #2  
Старый 24.05.2011, 19:36
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от sweet_lana
есть готовая программа
препод говорит
надо шифрование данных перед записью в БД Access

Говорили про какие то модули
Кто говорил?

Если препод - берем алгоритм "супер-пупер-невзламный-XOR".
И далее уже супер-пупер-невзламно защищенные данные пишем в Access.
Ответить с цитированием
  #3  
Старый 24.05.2011, 20:08
sweet_lana sweet_lana вне форума
Прохожий
 
Регистрация: 08.04.2011
Адрес: Челябинск
Сообщения: 21
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

говорил препод.
алгоритм я поищу, а как его в делфи прописать ?
может есть ссылочки или литература какая, где доступно пошагово пишут?
Ответить с цитированием
  #4  
Старый 24.05.2011, 20:17
sweet_lana sweet_lana вне форума
Прохожий
 
Регистрация: 08.04.2011
Адрес: Челябинск
Сообщения: 21
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

вот есть у меня процедура на добавление записи, как и куда что писать?
перед запросом? или нужно ранее где то сам алгоритм шифрования записать в делфи, а потом его вызывать на выполнение?

Код:
procedure Taddtovar.Button1Click(Sender: TObject);
var query1:string;
    idb:Integer;

begin
if (addtovar.Edit1.Text='') or (addtovar.Edit2.Text='') then
  MessageDLG('Заполните все поля',mtError,[mbOk],0)
else
  begin
    idb:=idtovar+1;
    addtovar.Edit4.Text:=IntToStr(idb);
//создание новой записи в таблице и добавление данных в строку

     query1:='INSERT INTO Справочник_товаров VALUES('''+Edit4.Text+''','''+edit1.Text+''','''+edit2.Text+''',0);';//**Запрос для добавления записи
     tovar.ADOQuery1.SQL.Clear;//**Очистка предыдущего запроса.
     tovar.ADOQuery1.SQL.Text:=query1;//**Заносим запрос
     tovar.ADOQuery1.ExecSQL;//**Выполнения запроса
     //**Отображения содержимого базы
     tovar.ADOQuery1.Active:=false;
     tovar.ADOQuery1.SQL.Clear;
     tovar.ADOQuery1.SQL.Add('SELECT * FROM Справочник_товаров');
     tovar.ADOQuery1.Active:=true;
     //перед закрытием окна очищаем поля для ввода
      edit1.Text:='';
      edit2.Text:='';
      close
  end;
end;
Ответить с цитированием
  #5  
Старый 25.05.2011, 00:51
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Та мого сопособов.

Например

по сути у тебя полезные данные
'''+Edit4.Text+''','''+edit1.Text+''','''+edit2.Te xt+''' [+ID+дата+время+контрольная сумма+...]

перед тем как их добавить преобразуешь во что-то не особо читаемое...
Тем же ксором...
Цитата:
Сообщение от sweet_lana
говорил препод.
алгоритм я поищу, а как его в делфи прописать ?
может есть ссылочки или литература какая, где доступно пошагово пишут?
http://www.delphisources.ru/pages/fa...rithm_xor.html
Прада там не самая оптимальная реализация. Но сойдет в учебных целях.

П.с.:надо будет на досуге нормальную реализацию сделать и закинуть в фак.

Последний раз редактировалось Konrad, 25.05.2011 в 01:01.
Ответить с цитированием
  #6  
Старый 25.05.2011, 10:08
Janom Janom вне форума
Начинающий
 
Регистрация: 04.02.2011
Адрес: Москва
Сообщения: 148
Версия Delphi: 7
Репутация: 133
По умолчанию

По моему в учебных целях даже модификация шифра цезаря сойдет:
Смысл ее в том, что каждый символ в открытом тексте заменяется буквой находящейся на [некоторое постоянное число+Порядковый номер в открытом тексте] (но не больше ограничения, если Поряд.№ кратен ограничению то счет номера начинается с 1) позиций правее него в алфавите. Например, в шифре со сдвигом 3, А была бы заменена на Д, Б станет Ж, и так далее.
Результат записывается задом на перед. Например, в слово DELPHI станет IHPLED.
A результатом всего кодирования слова DELPHI станет слово RPWRJH.

Код:
function enCodeCaesarCriptMode(Const enCodeStr:String; Const Shift,MaxNum:Byte):String;
var
  i:Cardinal;
  j:byte;
  CodedStr:String;
begin
CodedStr:='';
j:=0;
For i:=1 to Length(enCodeStr) do
  begin
    if i mod MaxNum = 0 then j:=0;
    inc(j);
    CodedStr:=Char(Ord(enCodeStr[i])+(Shift+j))+CodedStr;
  end;
Result:=CodedStr;
end;

function deCodeCaesarCriptMode(enCodeStr:String; Const Shift,MaxNum:Byte):String;
var
  i:Cardinal;
  j:byte;
  CodedStr:String;
begin
CodedStr:='';
for i:=Length(enCodeStr) downto 1 do
  begin
    CodedStr:=CodedStr+enCodeStr[i];
  end;
enCodeStr:=CodedStr;
CodedStr:='';
j:=0;
For i:=1 to Length(enCodeStr) do
  begin
    if i mod MaxNum = 0 then j:=0;
    inc(j);
    CodedStr:=CodedStr+Char(Ord(enCodeStr[i])-(Shift+j));
  end;
Result:=CodedStr;
end;
// Вызов функций
procedure TForm1.Button1Click(Sender: TObject);
begin
//первый параметр ТЕКСТ, второй СДВИГ, третий ОГРАНИЧЕНИЕ.
Memo2.Text:=enCodeCaesarCriptMode(Memo1.Text,3,25);//кодтровать
Memo3.Text:=deCodeCaesarCriptMode(Memo2.Text,3,25);//декодировать
end;
Ответить с цитированием
  #7  
Старый 25.05.2011, 11:53
sweet_lana sweet_lana вне форума
Прохожий
 
Регистрация: 08.04.2011
Адрес: Челябинск
Сообщения: 21
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

спасибо. становится понемногу понятнее смысл всего этого.
а у меня еще вопрос возник такой, а как DBGrid будет отображать эту кодированную информацию?
как я себе это представляю пока, так это программно пройтись по всем строкам таблицы, декодировать инфу, и подцепить ее к гриду? так получается?
Ответить с цитированием
  #8  
Старый 25.05.2011, 12:43
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

можно использовать вычисляемые поля, как одно из решений, все поля заменяем на вычисляемые в ADOQuery, и на событие вычисления ставим расшифровку. но это так, мысли...
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #9  
Старый 25.05.2011, 12:44
sweet_lana sweet_lana вне форума
Прохожий
 
Регистрация: 08.04.2011
Адрес: Челябинск
Сообщения: 21
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

шифр Цезаря испробовала в действии, кодирует текст. все отлично. при извлечение в текст.поля тоже делает отлично. и остался вопрос по отображению данных в гриде. он мне строку добавил и данные отображает кодированные, для пользователя это будет не понятно для работы
возник еще один вопрос, как быть с цифрами, если у меня есть число 74, он кодирует его в 9; а у меня поле в таблице только числовое, как с этим бороться можно?
Ответить с цитированием
  #10  
Старый 25.05.2011, 12:59
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

яж написал, попробуйте вычисляемые поля... проще по-моему некуда будет, но зато будет работать )) или события ставить на чтение, запись в базу..в общем можно сделать я думаю...
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя

Последний раз редактировалось Assistant, 25.05.2011 в 13:07.
Ответить с цитированием
  #11  
Старый 25.05.2011, 13:17
Janom Janom вне форума
Начинающий
 
Регистрация: 04.02.2011
Адрес: Москва
Сообщения: 148
Версия Delphi: 7
Репутация: 133
По умолчанию

я бы первым вариантом пользовался, так еще в базе не понятно для чего что хранится в поле число или строка
Ответить с цитированием
  #12  
Старый 25.05.2011, 13:22
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

Цитата:
Сообщение от sweet_lana
а у меня поле в таблице только числовое, как с этим бороться можно?
делать все поля строковыми
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #13  
Старый 25.05.2011, 13:50
sweet_lana sweet_lana вне форума
Прохожий
 
Регистрация: 08.04.2011
Адрес: Челябинск
Сообщения: 21
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Assistant
делать все поля строковыми
так делать и буду скорее всего
Ответить с цитированием
  #14  
Старый 25.05.2011, 13:58
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

шифрование накладывает много ограничений, таких как использование ORDER BY в SQL, оно не будет сортировать как вам нужно
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #15  
Старый 25.05.2011, 15:14
sweet_lana sweet_lana вне форума
Прохожий
 
Регистрация: 08.04.2011
Адрес: Челябинск
Сообщения: 21
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

даааа. тут все походу переделывать у себя надо в прграмме.
вот у меня ошибка начала выскакивать, когда кнопку нажимаю, все хорошо, вроде запись добавляет, начинаю трогать скрол грида, чтоб последнию строку посмотреть, так ругается "Grid index out of range".
Assistant а вы можете пример привести, как сделать событие на чтение/запись данных?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:04.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025