Что нового

XOR UDF - Библиотека для XOR шифрования по ключу

sforce5

Олл фо ЛулзЪ
Сообщения
160
Репутация
41
AutoIt: 3.3.0.0
Версия: 1.1

Категория: Шифрование
Описание: Библиотека для XOR шифрования по ключу

Пример:
Код:
#include "_XOR.au3"

$xor = _Xor_Encode("TEST_TEXT", 25)
$unxor = _Xor_Decode($xor, 25)

MsgBox(64, "", "Encoded: "& $xor &@CRLF&@CRLF&"Decoded: "& $unxor)

Код:
Код:
; _XOR.au3

#include "Array.au3"

; #FUNCTION# ======================================
; Name...........: _Xor_Encode
; Author.........: [Nuker-Hoax]
; =================================================

Func _Xor_Encode($sString, $iKey = 25)
	$sString2 = String($sString)
	$StrLen = StringLen($sString2)
	$Array = StringToASCIIArray($sString2)
	Dim $Chr[StringLen($sString2)]

	For $i = 0 To $StrLen - 1 Step 1
		$Array[$i] = BitXOR($Array[$i], $iKey)
	Next
	
	For $i = 0 To $StrLen - 1 Step 1
		$Chr[$i] = ChrW($Array[$i])
	Next

	Return _ArrayToString($Chr, "")
EndFunc

; #FUNCTION# ======================================
; Name...........: _Xor_Decode
; Author.........: [Nuker-Hoax]
; =================================================

Func _Xor_Decode($sString, $iKey = 25)
	$sString2 = String($sString)
	$StrLen = StringLen($sString2)
	$Array = StringToASCIIArray($sString2)
	Dim $Chr[StringLen($sString2)]
	
	For $i = 0 To $StrLen - 1 Step 1
		$Chr[$i] = BitXOR($Array[$i], $iKey)
	Next

	For $i = 0 To $StrLen - 1 Step 1
		$Chr[$i] = ChrW($Chr[$i])
	Next
	
	Return _ArrayToString($Chr, "")
EndFunc

Автор: [Nuker-Hoax]
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
sforce5
Русские буквы не зашифровывает.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 711
madmasles сказал(а):
Русские буквы не зашифровывает.
sforce5

Действительно, а почему ты поставил Chr(), а не ChrW()? Да и по большому счету, шифрованием это можно назвать с большой натяжкой. Это скорее преобразование. Но в общем идея не плохая. Если нужно по быстрому скрыть какую-нибудь информацию (напрмер в реестре), то этот способ IMHO намного лучше _StringEncrypt().
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Yashied [?]
а почему ты поставил Chr(), а не ChrW()?
Поменял в функциях Chr() на ChrW() и они "подружились" с русскими буквами.
 
Автор
sforce5

sforce5

Олл фо ЛулзЪ
Сообщения
160
Репутация
41
Исправил
 

ynbIpb

Скриптер
Сообщения
399
Репутация
109
f4llen
Не помешало бы написать ещё функцию XOR'a бинарных данных\ файлов
 

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
410
Не много упростил :smile:

Код:
$iRendom = Random(1, 255, 1)

$En_Xor = __xor_Crypt('Обычная строка (The usual line of)', $iRendom)
$Un_Xor = __xor_Crypt($En_Xor, $iRendom)

MsgBox(64, 'Result', 'Encoded: ' & @CRLF & $En_Xor & @CRLF & @CRLF & 'Decoded: ' & @CRLF & $Un_Xor)

Func __xor_Crypt($sString, $iKey = 70)
	Local $sRet, $aAscii = StringToASCIIArray(String($sString))
    If ($iKey == 0) Then Return SetError(1, 0, 0)
    For $i = 0 To UBound($aAscii) -1
	    $sRet &= ChrW(BitXOR($aAscii[$i], $iKey))
    Next
	Return SetError(0, $iKey, $sRet)
EndFunc
 
Верх