En el post de hoy, voy a dejar un nuevo ejercicio de PHP, en el que se realizará una encriptación de texto, utilizando clases (continuamos con la orientación a objetos), siguiendo las especificaciones que se muestran en las líneas de debajo …
Se creará una clase que permita encriptar y desencriptar texto, haciendo uso de la suma sin acarreo (ver la nota al final del enunciado). Esta clase sólo contendrá una única propiedad (atributo o variable de instancia): la clave. Todo se realizará en dos archivos (index.php y cifrar.php).
El archivo cifrar.php tendrá además los siguientes métodos:
1. claveAlea: asignará a la propiedad clave un valor entero aleatorio entre 0 y 255 (ambos incluídos).
2. digito: recibirá dos enteros y devolverá el dígito del primer argumento que está en la posición indicado por el segundo. Las unidades se consideran la posición cero. Por ejemplo: digito (345, 1) = 4
3. sumaSinAcarreo: recibirá dos argumentos enteros (se sabe que sólo tendrán un dígito cada uno de ellos) y devolverá suma de ambos sin acarreo (un solo dígito, por tanto): Por ejemplo: sumaSinAcarreo (3,8) = 1
4. numDigitos: recibirá un argumento entero e indicará cuántos dígitos contiene.
5. encripta: recibirá un texto y devolverá otro con los códigos ASCII encriptados y separados por una barra inclinada (“/”). Cada código se encripta sumándole la clave con el método del punto anterior (sumaSinAcarreo). Por ejemplo: suma(“HOLA”) = “22/29/26/15”.
6. claveDesc: devolverá el valor que permitirá desencriptar el texto encriptado. Se calcula a partir de la clave: suma (999 – clave, 111). Por ejemplo, si la clave es 123, suma (999 – clave, 111) = 987
7. desencripta: recibirá el texto encriptado y desencriptará cada código (recuérdese que el separador de códigos es la barra inclinada /) aplicándole el método suma a cada uno con la clave de desencriptado calculada con el método anterior. Cada código ASCII recuperado ha de convertirse al carácter correspondiente.
Una vez montada toda la estructura de la clase habrá que modificar lo anterior para que la generación de la clave aleatoria se haga de forma automática en el momento de crear el objeto.
Nota 1: Se necesitarán las siguientes funciones (puede que no todas, puede que alguna más): strlen, ord, chr, substr, floor, max y
explode .
Nota 2: Suma de dos dígitos sin acarreo: Es igual a calcular el módulo de su suma y 10: (digito1 + digito2) % 10
index.php
cifrar.php