[Cryption] Is it worth continuing this project?

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.

This is an alright module, however I would don’t see why I would need to have an encryption script. You should never ask users to create a password and never ask users for their password.

1 Like

I think you should keep working on it. It doesn’t matter if it isn’t used, it matters that you learn and have fun making. So please, continue the project.

(I didn’t mean to reply to Kaden)

3 Likes

I would never ask a user for any password. This is for others, who might want to encrypt something.
Thanks for your reply.

I will, thanks for replying. It really helps me alot.

2 Likes

I agree, it is good for learning but shouldn’t be released as a community resource (which it was, I saw) as it can cause bad influence on the Roblox community.

Keep it up. Also, why would you release the encryption method to everyone? Now it’s easier to decode knowing the letters and numbers used per character.

That’s the thing, you can make your own. You don’t HAVE to use this x3Charlist.

You can make a completely own list that only those can decrypt that have this list, else the string is going to become nonsense.

And no, it was not released: I just put it in the wrong category lol

Oh I see. It’s pretty good anyway :smile: