Necesito crear una función en PHP para hacer una especie de firma electrónica.
Tengo una cadena de numeros compuesta por fecha y un numero consecutivo, a esta cadena necesito agregarle un
digito verificador (el meollo del asunto).
El algoritmo ya lo tengo y va de la siguiente forma (ver imagen)
1.- Primero obtengo mi cadena de caracteres (fecha, numero consecutivo)
2.- Le aplico una llave (ejemplo 1,3,1,3,1,3,1,3)
Estos digitos se utilizaran para multiplicar cada uno de los numeros de mi cadena
(ver imagen)
El 2 se multiplica por el 1
El 0 se multiplica por el 3
El 0 se multiplica por el 1
El 7 se multiplica por el 3
El 1 se multiplica por el 1
El 2 se multiplica por el 3
El 0 se multiplica por el 1
.
.
.
y Así sucesivamente ..
El producto de cada numero, debe ser sumado (en el ejemplo de la imagen nos da un total de 53)
3.- Se debe aplicar la siguiente regla.
Si el numero es cerrado (es decir 20, 30, 40, 50) el digito verificador será el 0,
Si el numero es cualquier otro numero, se debera
seleccionar un numero de la decena proxima para hacer una resta y así obtener el numero verificador, (por ejemplo si el numero es el 78 se selecionara el 80, si el numero es 53 como el de la imagen el numero a seleccionar será 60.
De tal manera que si seguimos el ejemplo de la imagen tendriamos que hacer la resta de
60 - 53 y tendriamos un resultado de 7,
siendo 7 el anhelado
digito verificador.
y la clave final quedaria completa como la que se muestra en la imagen,
Por favor pido de su valiosa ayuda, la verdad no se ni como comenzar, necesito algunas ideas, de ustedes que son los expertos.
Se los agradeceré mucho como siempre.
Saludos