СообЧа > База Знаний > Программирование > Visual Basic > Файлы и папки

Вопрос

Никто не знает код, для шифрования отдельного файла? С использованием ключей и без Call Crypt(App.path & "\" & "file.txt")

Ответ

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 d As String
Dim lentext As Long
Dim lenpass As Long
Dim cn As Long
'строка для расшифровки
c = Code
'пароль
b = Password
'итог расшифровывания
a = ""
'узнаем длины каждой из строк
lentext = Len©
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

Private Sub Command1_Click()
Text1 = Encrypt("никому не скажу", "parol")
End Sub

Private Sub Command2_Click()
Text1 = Decrypt(Text1, "parol")
End Sub


Алексей



Copyright © 2000-2004 Сообщество Чайников
Контактная информация