Después de los ataques de "rainbow tables" y de las supuestas descodificaciones de códigos supuestamente invulnerables que se están produciendo últimamente me ha dado por interesarme un poco mas en el mundo de la criptografía, y lógicamente como mis conocimientos no dan como para verificar un nuevo algoritmo de codificación base me ha dado por intentar crear uno que a partir de una base secreta como seria la palabra a codificar se genere un código que complique la descodificación hasta el punto de ser tan enrevesado y críptico que no merezca la pena.
La base de funcionamiento esta en que la mayoría de códigos de cifrado dan como datos de salida "textos" de salida muy parecidos que son difícilmente diferenciables. A partir de eso si la selección de la cifrado a realizar se hace a partir de la palabra a cifrar, la cifrado mejora impresionantemente.
Ademas esta función incrementa el nivel de fuerza de la reencriptación de manera proporcional al numero de caracteres a cifrar, seleccionando una cifrado diferente aplicada a todo el texto y seleccionada a partir de la misma palabra a cifrar. Los tipos de cifrado a aplicar estarán almacenados en una carpeta llamada seguridad que tendra en su interior 18 archivos numerados con los diferentes tipos de cifrado, los cuales se pueden modificar al gusto. Estos archivos tienen como norma utilizar como entrada de datos una variable $dato y lo mismo como salida. Ejemplo:
PHP:
Código
function kraken($palabra, $secreto = '')
{
$dato = $palabra.md5($secreto);
$pases = explode("\n" ,chunk_split($dato, 1));
$dir = opendir('seguridad/');
while ($archivo = readdir($dir)){
if($archivo[0] != '.'){ $code[] = 'seguridad/'.$archivo; }
}
closedir($dir);
natsort($code); //ordenado de la lista
foreach($code as $valor){ $_code[] = $valor; }
foreach($pases as $key => $value){
$valor = ord($value).'';
$resultado = $valor[0] + $valor[1] + $valor[2];
if($resultado != 0){
$_valor = ord($pases[$key+1]).'';
$_resultado = $_valor[0] + $_valor[1] + $_valor[2];
if( ($resultado + $_resultado)> ((18/2)+18) ){ $_resultado = $resultado; }
include($_code[$_resultado]);
}
}
return md5($dato);
}
Para utilizar la función necesitaremos solo una palabra a codificar y una semilla de seguridad que denominaremos $secreto. La variable $secreto asegura que, la misma función ejecutada en 2 servidores diferentes y con "palabras" a codificar idénticas pueden dar textos de salidas diferent
Navegando por internet me encontré esté fragmento criptógrafico en un documento de un blog llamado tierra0.com el cual ya solo existe en la cache de google, como no soy experto en el tema quería preguntaros si de verdad es seguro y que nota le dáis.










Autor



En línea
