Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Шифрование строки / 7 сообщений из 7, страница 1 из 1
29.09.2013, 12:04
    #38410986
REBBUS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шифрование строки
Добрый день, есть у кого нибудь небольшая функция, процедура шифрование/дешифрование строки на Fox ? хочу прежде чем заносить некоторые записи в базу mysql шифровать их. Пробовал средствами самого mysql AES_ENCRYPT, ENCODE но их для нормальной работы в поле BLOB нужно заносить (пробовал и просто в TEXT) , а потом они в поле в GRID не отображаются, да и вообще не могу никуда отобразить, пишет вместо текста Gen , если есть возможность как-то прочесть это поле, то подскажите пожалуйста и тогда буду шифровать через mysql. облазил поиск и ничего понятного не нашел((
...
Рейтинг: 0 / 0
29.09.2013, 18:06
    #38411138
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шифрование строки
REBBUS, а не думал про использование системной функции Фокса SYS(15)? Составляешь взаимо-однозначное отображение в строку-ключ длиной 256 символов и вперёд. Дёшево и сердито
...
Рейтинг: 0 / 0
29.09.2013, 18:23
    #38411148
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шифрование строки
Стандартных средств нет. Да и как они могут быть? Это как дверь с замком к которому все знают как сделать ключ.
Хочешь шифровать - изобретай свой способ. Самое примитивное переставить буквы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
lcNorm = 'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБйцукенгшщзхъфывапролджэячсмитьбю'
lcCrypt = 'ЯЧСМИТЬБйцукенЙЦУКЕНГШЩЗХЪФолджэячсмитьбюЫВАПРОЛДЖЭгшщзхъфывапр'

lcText = 'Привет'
lcCryptText = chrtran(lcText, lcNorm, lcCrypt)
? 'Шифровано:', lcCryptText
? 'Расшифровано:', chrtran(lcCryptText, lcCrypt, lcNorm)


Только шифрование/дешифрование придется тебе прописывать везде:перед сохранением, после чтения. Также будет невозможно использовать ORDER BY по шифрованным полям. Подумай, надо ли тебе этот гемор.
...
Рейтинг: 0 / 0
29.09.2013, 18:23
    #38411149
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шифрование строки
Rostislav D. Kudryashov, только строка д.б. 255 символов. Нулевой символ SYS(15) перекодировать не хочет.
...
Рейтинг: 0 / 0
29.09.2013, 18:25
    #38411150
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шифрование строки
REBBUS, кстати, SYS(15) как раз предназначена для работы с индексами по "зашифрованным" полям.
...
Рейтинг: 0 / 0
29.09.2013, 19:09
    #38411168
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шифрование строки
REBBUS, между прочим, "зашифровать" таблицу на период её "хранения", можно просто обнулив байт её кодовой страницы.Если таблица работает с какой-нибудь экзотической CODEPAGE. И если во время хозяйской работы с таблицей посторонние до неё не допускаются.
...
Рейтинг: 0 / 0
01.11.2013, 22:23
    #38450613
reware
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шифрование строки
REBBUSДобрый день, есть у кого нибудь небольшая функция, процедура шифрование/дешифрование строки на Fox ? хочу прежде чем заносить некоторые записи в базу mysql шифровать их. Пробовал средствами самого mysql AES_ENCRYPT, ENCODE но их для нормальной работы в поле BLOB нужно заносить (пробовал и просто в TEXT) , а потом они в поле в GRID не отображаются, да и вообще не могу никуда отобразить, пишет вместо текста Gen , если есть возможность как-то прочесть это поле, то подскажите пожалуйста и тогда буду шифровать через mysql. облазил поиск и ничего понятного не нашел((

Ну это рассчитано совсем на лоха, которому лениво будет вручную
делать руками преобразования. Однако, в 99% это себя оправдывает.
Шифрование - x=CRYPT('Привет')
Дешифрация - z=CRYPT(x)
Код: sql
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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
****************************************************************
*BINDEC(<expc>)
*BINARY TO DECIMAL CONVERSION
procedure bindec
parameter lcbinary
private lncnt1, lnasc, lcbinary, lndec
  if type("LCBINARY")!="C"
    return 0
  endif
return asc(binasc(lcbinary))
****************************************************************
* DECIMAL XOR
procedure decxor
parameters lndec1, lndec2
private lncnt1, lndec, lndec1, lndec2
  if type("LNDEC1")!="N" or type("LNDEC2")!="N"
    return ""
  endif
return bindec(binxor(decbin(lndec1),decbin(lndec2)))
****************************************************************
* CRYPT(<string>)
*
* Encrypts/decrypts <string>.
*
procedure crypt
parameters lcstring
private lnstrlen, lnchr, lccrypt, lcstring
  lnstrlen=len(lcstring)
  lccrypt=""
  for lncnt1=1 to lnstrlen
    lnchr=decxor(mod(lncnt1,255),asc(substr(lcstring,lncnt1,1)))
    lccrypt=lccrypt+chr(lnchr)
  endfor
return lccrypt
****************************************************************
* DECBIN(<expn>)
* returns a binary-like string from an ascii number
* from 0 to 255
procedure decbin
parameters lndec
private lndec, lcbinary
  do case
    case type("LNDEC")="C"
      lndec=val(lndec)
    case type("LNDEC")!="N"
      return ""
  endcase
  if lndec > 255
    return ""
  endif
  lcbinary=ascbin(chr(lndec))
return lcbinary
****************************************************************
* ASCBIN(<expc>)
*
* turns an ascii character into binary representation
*
procedure ascbin
parameters lcascii
private lcascii, lncnt1, lnasc, lcbinary
  if type("LCASCII")!="C"
    return ""
  endif
  lcbinary=""
  lnasc=asc(substr(lcascii,1,1))
  for lncnt1=7 to 0 step -1
    if lnasc >= 2^lncnt1
      lcbinary=lcbinary+"1"
      lnasc=lnasc-2^lncnt1
    else
      lcbinary=lcbinary+"0"
    endif
  endfor
return lcbinary
****************************************************************
* BINARY XOR
procedure binxor
parameters lcbin1, lcbin2
private lncnt1, lcbinary, lcbin1, lcbin2
  if type("LCBIN1")!="C" or type("LCBIN2")!="C"
    return ""
  endif
*  lnasc=0
  lcbinary=""
  lcbin1=padl(lcbin1,8,"0")
  lcbin2=padl(lcbin2,8,"0")
  for lncnt1=1 to 8
    lcbinary=lcbinary+iif(substr(lcbin1,lncnt1,1)=substr(lcbin2,lncnt1,1),;
                          "0","1")
  endfor
return lcbinary
****************************************************************
* BINASC(<expc>)
*
* BINARY TO ASCII CONVERSION with a binary-like character
* string <expc> sent as a parameter.
*
procedure binasc
parameter lcbinary
private lncnt1, lnasc, lcbinary
  if type("LCBINARY")!="C"
    return ""
  endif
  lnasc=0
  lcbinary=padl(lcbinary,8,"0")
*  lnasc=asc(substr(lcascii,1,1))
  for lncnt1=1 to 8
    lnasc=lnasc+iif(substr(lcbinary,lncnt1,1)="1",2^(8-lncnt1),0)
  endfor
  lcascii=chr(lnasc)
return lcascii
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Шифрование строки / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]