Что нового

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,322
sforce5
Русские буквы не зашифровывает.
 

Yashied

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

sforce5

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

ynbIpb

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

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Не много упростил :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
 
Верх