Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Шифрование базы Добавлено: 06.07.02 15:05  

Автор вопроса:  Andrey999 | Web-сайт: www.radio-device.narod.ru | ICQ: 30852361 
Кто знает как зашифровать базу mdb, чтобы если ее сопрут не смогли воспользоваться. P.S. Хотя бы одно поле.

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 06.07.02 15:10

Можно установить пароль на базу данных, а можно данные шифровать в ручную с помощью XOR:

Public Function Encrypt(ByVal Source As String, ByVal Password As String) As String 'шифрование данных
Dim a As String
Dim B As String
Dim c As String
Dim d As String
Dim lentext As Long
Dim lenpass As Long
Dim cn As Long
'ввод исходных данных
'исходный текст для шифрования - запрашивается от пользователя, к примеру -
a = Source
'пароль: может запрашиваться от пользователя
B = Password
'итог шифрования
c = ""
'узнаем длины каждой из строк
lentext = Len(a)
lenpass = Len(B)
'собственно шифрование
For cn = 1 To lentext
'в этой строке разберитесь сами, здесь попросту выполняется функция Xor с каждым символом исходной строки и соответствующим символом пароля, как бы "повторенным" на всю длину исходного текста. Mid берет из середины строки символ, Asc - превращает его в ASCII-код, Str - превращает число в строку, Trim - удаляет пробелы
d = Trim(Str(Asc(Mid(a, cn, 1)) Xor Asc(Mid(B, ((cn - 1) Mod lenpass) + 1, 1))))
'а теперь сделаем так, чтобы каждый символ занимал ровно три позиции, вне зависимости от величины его ASCII-кода. А иначе как вы будете потом при расшифровке разбивать строку на символы?
Select Case Val(d)
Case 0 To 9
d = "00" + d
Case 10 To 99
d = "0" + d
End Select
c = c + d
'ну вот и все, и так - с каждым символом из исходной строки
Next cn
'в итоге в переменной с - зашифрованная строка, каждой исходной букве соответствует 3 символа, ее можно записать в любое место - в документ, к примеру:
Encrypt = c
End Function

Public Function Decrypt(ByVal Code As String, ByVal Password As String) As String 'расшифровывание данных
Dim a As String
Dim B As String
Dim c As String
Dim lentext As Long
Dim lenpass As Long
Dim cn As Long
'строка для расшифровки
c = Code
'пароль
B = Password
'итог расшифровывания
a = ""
'узнаем длины каждой из строк
lentext = Len(c)
lenpass = Len(B)
'собственно расшифровывание
For cn = 1 To lentext Step 3
a = a + Chr(Val(Mid(c, cn, 3)) Xor Asc(Mid(B, (Int(cn / 3) Mod lenpass) + 1, 1)))
Next cn
'в итоге в переменной a - расшифрованная строка, ее можно записать в любое место - в документ, к примеру:
Decrypt = a
End Function

Ответить

Номер ответа: 2
Автор ответа:
 Andrey999



ICQ: 30852361 

Вопросов: 73
Ответов: 168
 Web-сайт: www.radio-device.narod.ru
 Профиль | | #2
Добавлено: 07.07.02 01:06
Большое спасибо за код. Только у меня есть несколько кодов для
шифрования но у меня вопрос такой: вот я запустил свое приложение   при запуске оно расшифровало базу для работы а при закрытии опять   зашифровало я вот это не знаю как сделать в принципе. Если знаете как помогите.
  Спасибо.

Ответить

Номер ответа: 3
Автор ответа:
 Petrovich



Вопросов: 9
Ответов: 84
 Профиль | | #3 Добавлено: 08.07.02 11:55
Спасибо и от меня за "разжеванный" алгоритм шифрования. Но вот что смущает: размер шифрованных данных возрастает в 3 раза...  Попробовал сжать arj. Степень сжатия файла с числовми данными 17%, а текстового файла такого же размера 55%

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам