![]() |
|
|
#1
|
|||
|
|||
![]() Ребятки помоги пожалуйста! есть готовая программа. да вот препод говорит сделать надо шифрование данных перед записью в БД Access. как я понимаю еще надо и дешифрование тогда, когда из БД данные вытаскиваю. Как можно это все реализовать. Честно, не представляю как это будет выглядеть. Говорили про какие то модули шифрования. искала в инете, да только похожего примера не нашла. Базу подключала через ADO.
|
#2
|
||||
|
||||
![]() Цитата:
Если препод - берем алгоритм "супер-пупер-невзламный-XOR". И далее уже супер-пупер-невзламно защищенные данные пишем в Access. |
#3
|
|||
|
|||
![]() говорил препод.
алгоритм я поищу, а как его в делфи прописать ? может есть ссылочки или литература какая, где доступно пошагово пишут? |
#4
|
|||
|
|||
![]() вот есть у меня процедура на добавление записи, как и куда что писать?
перед запросом? или нужно ранее где то сам алгоритм шифрования записать в делфи, а потом его вызывать на выполнение? Код:
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
|
||||
|
||||
![]() Та мого сопособов.
Например по сути у тебя полезные данные '''+Edit4.Text+''','''+edit1.Text+''','''+edit2.Te xt+''' [+ID+дата+время+контрольная сумма+...] перед тем как их добавить преобразуешь во что-то не особо читаемое... Тем же ксором... Цитата:
Прада там не самая оптимальная реализация. Но сойдет в учебных целях. П.с.:надо будет на досуге нормальную реализацию сделать и закинуть в фак. Последний раз редактировалось Konrad, 25.05.2011 в 01:01. |
#6
|
|||
|
|||
![]() По моему в учебных целях даже модификация шифра цезаря сойдет:
Смысл ее в том, что каждый символ в открытом тексте заменяется буквой находящейся на [некоторое постоянное число+Порядковый номер в открытом тексте] (но не больше ограничения, если Поряд.№ кратен ограничению то счет номера начинается с 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; |