Moduł:Sandbox/Ksawi999/Koduj
Moduł służy do kodowania i dekodowania tekstu. Posiada on dwie funkcje: code (kodującą) i decode (dekodującą). Szablon implementujący ten moduł posiada również funkcję repair, która pozwala na "naprawienie" kodu przestarzałego lub zakodowanego w inny sposób. Pierwszy parametr (po nazwie funkcji) to tekst, który moduł ma zakodować, drugi parametr to klucz kodowania, a trzeci, opcjonalny parametr dotyczy sposobu kodowania (c, / lub * i ich dowolne kombinacje) i nie będzie uwzględniony przy dekodowaniu (aby rozkodować tekst nie trzeba pamiętać jakim sposobem się go zakodowało). Sposób kodowania "c" optymalizuje tekst do skopiowania i użycia w innym, niezależnym szablonie (zamienia | na | i = na =). Sposób kodowania "/" dodaje do zakodowanego tekstu rozdzielacze (//) w miejscach, w których występujące po sobie znaki tworzą tekst, który może zaburzyć działanie szablonu (podwójne nawiasy klamrowe) lub jest znakiem specjalnym (// lub **). Sposób kodowania "*" pozwala na zakodowanie znaków, których kod ASCII jest większy niż 126, np. polskich znaków. Kolejność znaków odpowiadających sposobie kodowania nie ma znaczenia.
Plusy modułu
- Szybki, wygodny i prosty w użyciu.
- Intuicyjny.
- Posiada zaawansowany system zabezpieczeń (przy użyciu szablonu Użytkownik:Ksawi999/sandbox/Lua/koduj, system ten jest jeszcze lepszy).
- Szansa na znalezienie klucza wynosi mniej niż 1/200000000 (gdy będą brane pod uwagę wszystkie klucze do długości 1000000 znaków).
- Możliwości na stworzenienie klucza jest praktycznie nieskończoność.
Plusy użycia szablonu (Użytkownik:Ksawi999/sandbox/Lua/koduj)
- Posiada bardzo przydatną funkcję - repair, która "naprawia" kod zakodowany innym sposobem (zakodowany tym modułem lub szablonem).
- Najbardziej zaawansowany system zabezpieczeń w internecie.
- Nikt oprócz ciebie nie może używać tego szablonu na twojej stronie użytkownika.
- Szablon generuje klucz automatycznie.
Minusy modułu
- Niemożliwe jest zakodowanie tekstu sformatowanego znacznikami HTML (ale wszystko inne już tak).
- Najprawdopodobniej ma jeszcze błędy (jeśli jakiś znalazłeś, proszę, abyś się ze mną skontaktował, np. na mojej dyskusji).
local p = {}
function p.code( data )
local str = data.args[1]
if str == nil then
return "nic"
end
local key = data.args[2]
if key == nil then
key = "!"
end
local codeKey = 0
local i1 = 1
while i1 <= key:len()
do
codeKey = codeKey + string.byte(key,i1)
i1 = i1 + 1
end
local result = ""
local i = 1
while i <= str:len()
do
local x = string.byte(str,i)
if x <= 126 then
x = x - math.floor(((math.sin(codeKey + i) + 1) / 2) * 94)
if x < 32 then
x = x + 95
end
end
if (x == 124 or x == 61) and data.args[3] == "c" then
if x == 124 then
x = 33
end
result = result.."{{"..string.char(x).."}}"
else result = result..string.char(x)
end
i = i + 1
end
return result
end
function p.decode( data )
local str = data.args[1]
if str == nil then
return "nic"
end
local key = data.args[2]
if key == nil then
key = "!"
end
local codeKey = 0
local i1 = 1
while i1 <= key:len()
do
codeKey = codeKey + string.byte(key,i1)
i1 = i1 + 1
end
local result = ""
local i = 1
while i <= str:len()
do
local x = string.byte(str,i)
if x <= 126 then
x = x + math.floor(((math.sin(codeKey + i) + 1) / 2) * 94)
if x > 126 then
x = x - 95
end
end
result = result..string.char(x)
i = i + 1
end
return result
end
return p