<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker: */

# Funciones para encriptar y desencriptar con un algoritmo a la Cesar.
# @author Vladimir Támara Patiño
# Dominio público, sin garantías. 2004. http://structio.sourceforge.net/sigue
#
# El algoritmo no es criptograficamente fuerte, aunque no tiene el problema con
# sesiones de las funciones de mcrypt (no pueden guardarse sus datos
# en la sesión).  

#  Para estas funciones es mejor una llave más larga que el mensaje.

# Encripta un mensaje con una llave.
function enc_ala_cesar($llave, $mensaje) {
	$lm=strlen($mensaje);
	$r="";
	for ($i=0;$i<$lm;$i++) {
		$c=substr($mensaje,$i,1);
		$cl=substr($llave,$i%$lm,1);
		$r.=chr((ord($c)+ord($cl)) % 256);
	}
	return $r;
}


# Desencripta un mensaje con una llave.
function des_ala_cesar($llave, $enc) {
	$lm=strlen($enc);
	$r="";
	for ($i=0;$i<$lm;$i++) {
		$c=substr($enc,$i,1);
		$cl=substr($llave,$i%$lm,1);
		$r.=chr((ord($c)-ord($cl)) % 256);
	}
	return $r;
}

?>
