Greetings!
My name is quezSypher, and I am currently working on a non-crackable solution to encrypt passwords, and other data.
However, I am not sure whether I should continue this. Here’s my plan:
You have an array with every character you want, called a x3Charlist. With the module script I am currently scripting, you can verify that list. Verifying is basically nothing else than checking for multiple x3Chars under every letter.
Let me show you something:
["Morphing Characters"] = {
["A"] = {
"x323fASfwg28"
},
["B"] = {
"3498ifddsgwa"
},
["C"] = {
"38fg82fjbiqw"
},
["D"] = {
"fi123uj8g2we"
},
["E"] = {
"dfijh83wdfka"
},
["F"] = {
"2384ugvbkefg"
},
["G"] = {
"cv9uiqxqw9er"
},
["H"] = {
"xyr49123kwqf"
},
["I"] = {
"934ugi91e09g"
},
["J"] = {
"xosekwoe912i"
},
["K"] = {
"bodkgikmq02f"
},
["L"] = {
"y0folqsfcp0l"
},
["M"] = {
"b9f913f8c83x"
},
["N"] = {
"ogkeiojb230g"
},
["O"] = {
"mjokfm,qwmgi9"
},
["P"] = {
"|Yfgi3u8v8ijw"
},
["Q"] = {
"bn0wi939kefoe"
},
["R"] = {
"b9wfi8j8ej12k"
},
["S"] = {
"n9i89ufe8ue8f"
},
["T"] = {
"xyofkgwo384fv"
},
["U"] = {
"xb9iwd9jk99if"
},
["V"] = {
"n90wif9i9if0s"
},
["W"] = {
"nb90df0w0c00w"
},
["X"] = {
"xy90wedokw99f"
},
["Y"] = {
"ci8jhd78h78gd"
},
["Z"] = {
"yhwsetg37r823"
},
["1"] = {
"d8gfz2478hv72"
},["2"] = {
"u8dfzv73124rt"
},["3"] = {
"d8fzu3nuvnwue"
},["4"] = {
"idqw8728zfv7v"
},["5"] = {
"9fdbu7d8vj8ew"
},["6"] = {
"90fisji8b8qn4"
},["7"] = {
"cvjsbzhvq7ehn"
},["8"] = {
"v90nue8wujv78"
},["9"] = {
"v0xcqef9uj28f"
},["0"] = {
"89dgz7dvzhqee"
}
}
}
Every letter has a string, called the x3Trimstring, because when encrypting it takes 3 random letters out of the x3Trimstring and combines them to the encrypted string. This way, there can be tens of variations of an encrypted string even when you only have 2 letters.
In my head it’s not crackable, but is it?
So, is it worth spending time on this or should I give up?
[MODULESCRIPT SO FAR]
local cryption = {}
local main = {}
local x3Table = {}
local list = {}
local AllX3Characters = {}
local verified_list = false
function cryption:verify_custom_list(check_list)
list = check_list
for index, value in pairs(check_list) do
AllX3Characters = {}
table.insert(AllX3Characters, string.sub(value[1], 1, 3))
table.insert(AllX3Characters, string.sub(value[1], 4, 6))
table.insert(AllX3Characters, string.sub(value[1], 7, 9))
table.insert(AllX3Characters, string.sub(value[1], 10, 12))
table.insert(x3Table, {[value[1]] = AllX3Characters})
end
verified_list = true
for main_index, main_value in pairs(x3Table) do
for search_index, search_value in pairs(main_value) do
for searching_main_index, searching_main_value in pairs(x3Table) do
for searching_index, searching_value in pairs(searching_main_value) do
if search_value == searching_value and not (main_index == searching_main_index) then
warn("[Cryption] Overlapping x3Character: " .. search_value .. " and " .. searching_value, "at", main_index, "and", searching_main_index)
verified_list = false
end
end
end
end
end
return verified_list
end
function stringToList(string)
local returnList = {}
for indx = 1, #string, 1 do
table.insert(returnList, string.sub(string, indx, indx))
end
return returnList
end
function cryption:encrypt(strings: StringValue)
local encrypted_text = ""
local mode = ""
if not verified_list then
warn("[Cryption] No custom list used, using build-in list to encrypt. (CAUTION: HACKERS CAN KNOW THIS LIST AND EXPLOIT EASILY.)")
mode = "a"
else if verified_list then
warn("[Cryption] Using custom list to encrypt.")
mode = "b"
end
end
if mode == "a" then
local stringToUse = stringToList(string.upper(strings))
for indx, val in pairs(x3Table) do
for index, value in pairs(stringToUse) do
local thing = val[list[tostring(value)][1]]
if thing then
encrypted_text = encrypted_text .. thing[math.random(1,#thing)]
end
end
end
else if mode == "b" then
local stringToUse = stringToList(string.upper(strings))
for indx, val in pairs(x3Table) do
for index, value in pairs(stringToUse) do
local thing = val[list[tostring(value)][1]]
if thing then
encrypted_text = encrypted_text .. thing[math.random(1,#thing)]
end
end
end
end
end
return encrypted_text
end
function cryption:decrypt(encrypted_string)
end
return cryption
[EXAMPLE]
The string “Hello” turned into this on the first try:
fka491sfcolqmjo
On the second try:
dfi491olqp0lmjo
On the third try:
jh823ksfcy0fmgi
And I could continue to do this, the script would know how to decrypt it, though.