Что нового

Как зашифровать, дешифровать url?

Pennon

Новичок
Сообщения
45
Репутация
0
Собственно, как, с помощью Autoit, адрес http://autoit-script.ru/index.php?topic=27093.new#new сделать в шестнадцатеричной кодировке символов?
 
Автор
P

Pennon

Новичок
Сообщения
45
Репутация
0
Уточню
 

Вложения

  • Скриншот 29-07-2019 182251.jpg
    Скриншот 29-07-2019 182251.jpg
    66.2 КБ · Просмотры: 18

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
encoding.au3 на форуме
_Encoding_HexToURL
_Encoding_URLToHex
 
Автор
P

Pennon

Новичок
Сообщения
45
Репутация
0
sngr
Спасибо, домен autoit-script.ru и ещё кое что остается.
Как все символы закодировать?
Код:
#include 'encoding.au3'
MsgBox(32,'',_Encoding_URLToHex("http://autoit-script.ru/index.php?topic=27093.msg149027;topicseen#new"))
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Это не шифровка, данный метод применяется в веб адресах - там разрешены латиница, цифры, ещё какието символы остальные кодируются. Хочешь перевести строку в символы смотри в encoding base64.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Pennon
Для какой цели это нужно?
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Может лучше как-нибудь так?
Код:
Func _encodeURIComponent($sTxt)
  $sTxt = StringReplace($sTxt, Chr(0), '')
  $sTxt = StringReplace($sTxt, @CRLF, '\r\n')
  $sTxt = StringReplace($sTxt, @CR, '\r')
  $sTxt = StringReplace($sTxt, @LF, '\n')
  $sTxt = StringRegExpReplace($sTxt, "\s", " ")
  $sTxt = StringReplace($sTxt, "'", "\'")
  $sTxt = StringReplace($sTxt, '"', '\"')
  $oSC = ObjCreate("ScriptControl")
  If Not IsObj($oSC) Then Return SetError(1)
  $oSC.Language = "JavaScript"
  Return $oSC.Eval('encodeURIComponent("' & $sTxt & '");')
EndFunc  ;==>_encodeURIComponent

Func _decodeURIComponent($sTxt)
  $sTxt = StringReplace($sTxt, Chr(0), '')
  $sTxt = StringReplace($sTxt, @CRLF, '\r\n')
  $sTxt = StringReplace($sTxt, @CR, '\r')
  $sTxt = StringReplace($sTxt, @LF, '\n')
  $sTxt = StringRegExpReplace($sTxt, "\s", " ")
  $sTxt = StringReplace($sTxt, "'", "\'")
  $sTxt = StringReplace($sTxt, '"', '\"')
  $oSC = ObjCreate("ScriptControl")
  If Not IsObj($oSC) Then Return SetError(1)
  $oSC.Language = "JavaScript"
  Return $oSC.Eval('decodeURIComponent("' & $sTxt & '");')
EndFunc  ;==>_encodeURIComponent

Local $orig_url = 'http://autoit-script.ru/index.php?topic=27093.new#new'
Local $encoded_url = _encodeURIComponent($orig_url)
Local $decoded_url = _decodeURIComponent($encoded_url)
ConsoleWrite($orig_url & @CRLF & $encoded_url & @CRLF & $decoded_url & @CRLF)

А вообще да, для чего нужна эта кодировка, цель?
 
Автор
P

Pennon

Новичок
Сообщения
45
Репутация
0
alex33 [?]
В текстовом файле кириллица, но встречаются строки URL
Эти строки нужно сделать не читаемыми но иметь возможность восстановить исходные адреса.
Пробую _EnCryptDeCrypt
Зашифровать получается, но при де шифровании страдает весь текст. Не получается дешифровать только зашифрованные строки.
 
Автор
P

Pennon

Новичок
Сообщения
45
Репутация
0
InnI
Спасибо. Как восстанавливать строки?
Не хочет так
Код:
#include <Encoding.au3>
#include <Crypt.au3>
#include <String.au3>
HotKeySet('{Esc}', '_Exit')
$sFileOk = @ScriptDir & '\text_decod.txt'
$hDest = FileOpen($sFileOk, 2)
$hFile = FileOpen(@ScriptDir & 'text_code.txt', 2)
$sEnCryptText = FileRead($hFile)
$sDeCryptText =  _HexToString($sEnCryptText)
;MsgBox(64, 'Info', 'Расшифрованный текст: ' & $sDeCryptText);
If $hDest = -1 Then Exit
FileWriteLine($hDest,$sDeCryptText)
FileClose($hFile)
 

Вложения

  • text_code.txt
    4.2 КБ · Просмотры: 5

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Pennon [?]
Как восстанавливать строки?
Если URL находится в отдельной строке, то можно так
Код:
#include <WinAPIShPath.au3>
#include <String.au3>
#include <File.au3>

$Text = "text.txt" ; оригинальный текст

; шифрование
$aText = FileReadToArray($Text)
For $i = 0 To UBound($aText) - 1
  If _WinAPI_UrlIs($aText[$i]) Then $aText[$i] = _StringToHex($aText[$i])
Next
_FileWriteFromArray("text_code.txt", $aText) ; шифрованный текст

$Text = "text_code.txt" ; шифрованный текст

; расшифровка
$aText = FileReadToArray($Text)
For $i = 0 To UBound($aText) - 1
  If StringIsXDigit($aText[$i]) Then $aText[$i] = _HexToString($aText[$i])
Next
_FileWriteFromArray("text_decode.txt", $aText) ; расшифрованный текст
 
Верх