Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

guiobom131

[Resolvido] Codificando strings com php

Recommended Posts

3 funções para codificar e descodificar strings com senhas

// Função que codifica uma string.
// O parâmetro $cod é o tipo de codificação utilizada, pode ser 1, 2, 3, 4, 5, 6, 7, 8, 9 ou uma string com 26 letras minúsculas sem repetir nenhuma.
// Se não for informado será escolhido aleatoriamente entre 1 e 9. Para uma senha aleatoria use a função gerarsenha()
// A segurança codificando com números não é absoluta, pois basta chamar a função descodifica e a string é recuperada intacta.
// Já utilizando senha ela só será descodificada com a mesma senha
function codifica($str, $cod="") {
	if ($cod == "") $cod=rand(1, 9);
	$letras = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");
	$trans = array();
	if (strlen($cod) == 1) {
		for ($i=0; $i<26; $i++) {
			$trans[$letras[$i]] = $letras[($i+$cod)%26];
			$trans[strtoupper($letras[$i])] = strtoupper($letras[($i+$cod)%26]);
		}
	} else {
		for ($i=0; $i<26; $i++) {
			$trans[$letras[$i]] = $cod[$i];
			$trans[strtoupper($letras[$i])] = strtoupper($cod[$i]);
		}
		$cod = 0;
	}
	return $cod . strtr($str, $trans);
}
// Descodifica uma string codificada pela função codifica, é necessário informar o tipo de codificação caso ela tenha sido codificada com senha
function descodifica($str, $cod="") {
	if ($cod === "") $cod = $str[0];
	if ($cod == 0) return false;
	$str = substr($str, 1);
	$letras = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");
	$trans = array();
	if (strlen($cod) == 1) {
		for ($i=0; $i<26; $i++) {
			$trans[$letras[($i+$cod+26)%26]] = $letras[$i];
			$trans[strtoupper($letras[($i+$cod+26)%26])] = strtoupper($letras[$i]);
		}
	} else {
		for ($i=0; $i<26; $i++) {
			$trans[$cod[$i]] = $letras[$i];
			$trans[strtoupper($cod[$i])] = strtoupper($letras[$i]);
		}
	}
	return strtr($str, $trans);	
}
// Gera uma senha para a função codificar, $cod é opcional e pode ser 1, 2, 3, 4, 5, 6, 7, 8 ou 9
function gerasenha($cod=0) {
	$letras = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");
	$result = "";
	if ($cod == 0) {
		shuffle($letras);
		for ($i=0; $i<26; $i++) {
			$result .= $letras[$i];
		}
	} else {
		for ($i=0; $i<26; $i++) {
			$result .= $letras[($i+$cod)%26];
		}
	}
	return $result;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.