1

Тема: помощь с шифрованием

написал скрипт который шифрует и дешифрует текст (ну вернее нашел его в инете),так вот при шифровании он использует не совсем понятные символы,при отправке которых в вк или игры преобразует их в другие и дешифровать обратно невозможно,пример ѕуУиOЇЁЂЊRљчѓфђѳѲЎRњэѓщё , как сделать шифрвание но с использованием корректных символов.
https://pastebin.com/6Zt2yAwL (код)

2

Re: помощь с шифрованием

Как вариант можно результат шифрования перевести в BASE64.
Функцию взял здесь.
Для ссылок на этом форуме есть тэг.


Text =
(
Не жалею, не зову, не плачу,
Все пройдет, как с белых яблонь дым.
Увяданья золотом охваченный,
Я не буду больше молодым.

Ты теперь не так уж будешь биться,
Сердце, тронутое холодком,
И страна березового ситца
Не заманит шляться босиком.
)

Key1 = AutoHotkey forever!
Key2 = Хрен поймёшь, что тут написано.
Key3 = 1234567890

Shifr := Cipher(Text, Key1, Key2, Key3)  ; Шифруем.
Shifr := StrToBASE64(Shifr)
MsgBox, % Shifr

Shifr := BASE64ToStr(Shifr)
Text := Cipher(Shifr, Key3, Key2, Key1) ; Дешифруем, ключи в обратном порядке.
MsgBox, % Text



Cipher(Src, Key1, Key2 = 0, Key3 = 0)  ; Два последних ключа необязательны.
{
  Loop, 3
  {
    If not Key%A_Index%
      Break
    StringSplit, Keys, Key%A_Index%  ; Разбиваем фразу на отдельные ключи.
    Dest =
    Loop, Parse, Src  ; Перебор символов текста.
    {
      Index := Mod(A_Index, Keys0) + 1  ; Чтобы Index не вышел за пределы
                                        ; числа символов в ключевой фразе.
      Key := Asc(Keys%Index%)   ; Очередной ключ.
      Code := Asc(A_LoopField)  ; Код очередного символа текста.
      Dest .= Chr(Code = Key ? Code : Code ^ Key) ; Шифруем и добавляем.
    }
    Src := Dest
  }
  Return Dest
}
 
StrToBASE64(Str, NOCRLF=1)  { 
	Crypt := 1 | (NOCRLF ? 0x40000000 : 0)
	Bytes := StrLen(Str) * (A_IsUnicode ? 2 : 1) 
	DllCall("Crypt32.dll\CryptBinaryToString", Ptr, &Str, UInt, Bytes, UInt, Crypt, Ptr, 0, UIntP, Chars)
	VarSetCapacity(OutData, Chars * (A_IsUnicode ? 2 : 1))
	DllCall("Crypt32.dll\CryptBinaryToString", Ptr, &Str, UInt, Bytes, UInt, Crypt, Str, OutData, UIntP, Chars)
	Return OutData
}

BASE64ToStr(StringBase64)  { 
	DllCall("Crypt32.dll\CryptStringToBinary", Ptr, &StringBase64
		, UInt, StrLen(StringBase64), UInt, 1, UInt, 0, UIntP, Bytes, UIntP, 0, UIntP, 0)
	VarSetCapacity(OutData, Bytes) 
	DllCall("Crypt32.dll\CryptStringToBinary", Ptr, &StringBase64
		, UInt, StrLen(StringBase64), UInt, 1, Str, OutData, UIntP, Bytes, UIntP, 0, UIntP, 0)
	Return OutData
}
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

3

Re: помощь с шифрованием

serzh82saratov
я не очень хорошо понимаю в ахк,можете написать как обращаться к функции,вот что делать что бы зашифровать,и что что бы расшифровать

4

Re: помощь с шифрованием

Посмотрите внимательнее, там есть первое:

Shifr := Cipher(Text, Key1, Key2, Key3)  ; Шифруем.
Shifr := StrToBASE64(Shifr)
MsgBox, % Shifr

и второе:

Shifr := BASE64ToStr(Shifr)
Text := Cipher(Shifr, Key3, Key2, Key1) ; Дешифруем, ключи в обратном порядке.
MsgBox, % Text
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

5

Re: помощь с шифрованием

Вы пример запускали?

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

6

Re: помощь с шифрованием

klim186, поставьте в своих сообщениях заглавные буквы и точки. Ссылку следует оформлять тегом "URL".

7

Re: помощь с шифрованием

Спасибо всем,все понял.