Si es que necesito varios Algoritmos ya hecho pero no realizados en PHP conoces alguno mira el que encontre pero no lo hice yo mismo:
<?php
//////////////////////////////////////////////////////////////////////////////////////////////
/* programación de cifrado
Hector A. Mantellini
http://www.sourcecode.com.ve
http://www.xombra.com
El sistema esta bajo los términos y Licencia
GNU GENERAL PUBLIC LICENSE
http://gugs.sindominio.net/gnu-gpl/gples.html */
//////////////////////////////////////////////////////////////////////////////////////////////
// Formulario
echo "<form action=\"$_SERVER[PHP_SELF]\" method=\"POST\" name=\"cifrado\" target=\"_self\">
<input name=\"cadena\" type=\"text\" maxlength=\"30\">
<input name=\"Cifrar\" type=\"submit\">
</form>";
// Fin formulario
if (!empty($_POST["cadena"]))
{ $cadena = trim($_POST["cadena"]);
primo($cadena); // Buscamos que Nº primo usar para el calculo del cifrado
sustituye($cadena,$val); // Susitituimos la cadena
// salida
echo "<br>Texto original: $_POST[cadena]";
echo "<br>Semilla generada: $semilla";
echo "<br>Primo a usar: $val";
echo "<br>Texto Cifrado: $nueva_cadena";
}
///////////////
// Funciones //
//////////////
///////////////////////////////////////////////////////////////////////////////////////////////
function primo($cadena)
{ // determinamos el Nº primo
global $val, $semilla;
srand((double)microtime()*1000000);
// time unix necesario para el calculo
$time = time();
// arreglo de Nº primos
$primo = array(1,2,3,5,7,11,13,17,19,23);
// Busqueda de la semilla. Aleatoriamente determinamos que primo vamos a usar
// y lo convertimos en un numero de 1 0 2 cifra para ser buscado a cual primo
// es igual o se acerca
$semilla = $val = 0;
$primero = rand(1,10); // el Nº 10 máximo por el largo del time();
$segundo = rand(1,10);
// conseguimos la semilla sumando los 2 número aleatorios
$semilla = substr($time, $primero , 1) + substr($time, $segundo, 1);
settype($semilla , "integer");
// buscamos a que primo es igual a $semilla o tomamos el siguiente significativo
while (list($indice,$valor) = each($primo))
{ if ($valor == $semilla ) { $val = $valor; break; }
if ($valor > $semilla ) { $val = $valor; break; } }
// fin Busqueda de la semilla
return $val;
}
/////////////////////////////////////////////////////////////////////////////////////////////
function sustituye($cadena,$val)
{
// Transformamos la cadena saltando caracteres tanto lo indica $val_usar
// ejemplo: si es a la primera letra de la cadena sabemos que corresponde
// al caracter número 1; por tanto si $val_usar es 5 añadimos 1+5= 6
// lo que sería la letra f.
// convertimos la cadena en un arreglo
global $nueva_cadena;
$alfabeto_min = 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");
$numero = array(0,1,2,3,4,5,6,7,8,9);
$alfabeto_may = 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");
$simbolos = array("%","@","!","=","$","&","-","*","+",".","_"," ","?","(",")","¡",">","<","#",",",";","{","}");
$arreglo = array_merge($alfabeto_min,$numero,$alfabeto_may,$simbolos);
$largo = strlen($cadena);
$nueva_cadena = '';
$cant_alfab = count($arreglo);
for($ciclo = 0; $ciclo < $largo; $ciclo++)
{ reset($arreglo);
$caracter_leido = substr($cadena,$ciclo,1);
while (list($indice,$letra) = each($arreglo))
{ if ($letra === $caracter_leido)
{ $cambio = $indice + $val;
if ($cambio > $cant_alfab) { $cambio = $cant_alfab - $indice + 1; }
$nueva_cadena .= $arreglo["$cambio"];
break; }
}
}
return trim($nueva_cadena);
}
?>
Dominio el PHP bien osea Intermedio.
Saludos, Dacan
