Function XorEncryptDecrypt(ByVal Text As String, ByVal Pass As String)
Dim i As Long
Dim b() As Byte 'шифруемые данные
Dim c() As Byte 'пароль, которым шифруется данные
Dim TextLen As Long 'длина шифруемых данных
Dim PassLen As Long 'длина пароля
'Если текст или пароль пусто значить шифрация бесполезна
If Len(Text) = 0 Then GoTo EXIT_LABEL
If Len(Pass) = 0 Then Exit Function
'Замеряем длину шифруемых данных
TextLen = Len(Text)
'Замеряем длину пароля
PassLen = Len(Pass)
'Создаем байтовый массив размера равного длине шифруемых данных
ReDim b(TextLen * 2)
'Создаем байтовый массив размера равного длине пароля
ReDim c(PassLen * 2)
'Копируем шифруемые данные в созданный байтовый массив
'т.е. Переводим тип String в байтовый массив
Call CopyMemory(b(0), ByVal Text, TextLen * 2)
'Копируем пароль в созданный байтовый массив
'т.е. Переводим тип String в байтовый массив
Call CopyMemory(c(0), ByVal Pass, PassLen * 2)
'непосредственно сама процедура шифрации данных переданным паролем
'пароль блочно накладывается на шифруемые данные операцией XOR
For i = 0 To UBound(b)
b(i) = b(i) Xor c(i Mod PassLen)
Next
'Переводим байтовый массив в тип String
Call CopyMemory(ByVal Text, b(0), TextLen * 2)
'Очистка памяти
Erase b
Erase c
'Сюда идет перенаправление, если текст или пароль пустые
EXIT_LABEL:
'Возвращаем зашифрованные/дешифрованные данные
XorEncryptDecrypt = Text
End Function