Desafío Contact
#3 Solución de thessoro
Ver código
|
Ver comentarios (4)
|
Descargar código
Fecha: 03 octubre 2005
Tamaño: 6404 caracteres
Comentarios: 4
Solución online:
Lo siento, pero no está disponible
Valoración









9.50
(2 votos)
"Algoritmos originales. Estos algoritmos no entran evidentemente a concurso por premios PPT ni a evaluación por los usuarios."
Valora esta solución
<?php
// Algoritmos originales del desafío Contact para php-hispano.net
// No calificable
function codificar($cadena) {
$cadena .= md5($cadena); $c2 = '';
$array = array('00'=>'*','01'=>'$','10'=>'&','11'=>'#');
for ($i = 0; $i < strlen($cadena); $i++) {
$bin = str_pad(decbin(ord($cadena{$i})),8,'0',STR_PAD_LEFT);
$c2 .= preg_replace('/([0-1]{2})/e','$array[\'\1\']',$bin);
}
return str_replace('1','',preg_replace('/([\$&#\*]{4})(\1+)?/e','\'\1\'.((strlen(\'\2\')/4)+1)',$c2));
}
function decodificar($cadena) {
$array = array('*'=>'00','$'=>'01','&'=>'10','#'=>'11');
$cadena = preg_replace('/([\$\#\&\*]{4})(?(1)([0-9]+))/e','str_repeat(\'\1\',\2)',$cadena);
$cadena = preg_replace('/([\$\#\&\*])([\$\#\&\*])([\$\#\&\*])([\$\#\&\*])/e','chr(bindec($array[\'\1\'].$array[\'\2\'].$ar
ray[\'\3\'].$array[\'\4\']))',$cadena);
$mensaje = substr($cadena,0,-32);
return md5($mensaje) == substr($cadena,-32) ? $mensaje : false;
}
?>