Pregunta

Supongamos que tengo una serie de números índices que consiste en un dígito de control . Si tengo una bastante buena muestra (digamos números de índice 250 de muestra), no tengo una manera de extraer el algoritmo que se ha utilizado para generar el dígito de control?

Creo que hay al menos debería haber un enfoque programático para encontrar un conjunto de algoritmos posibles.

UPDATE:. La longitud de un número de índice es de 8 dígitos incluyendo el dígito de control

¿Fue útil?

Solución

No, no en el caso general, ya que el número de posible algoritmos es mucho más de lo que puede pensar. Un espacio de muestra de 250 puede no ser suficiente para hacer el análisis numérico apropiado.

En un ejemplo extremo, digamos que sus muestras son los 15 dígitos de longitud. Lo haría no ser capaz de detectar de forma fiable el algoritmo si ha cambiado el comportamiento de los superiores a 15 caracteres.

Si usted quiere estar seguro, usted debe realizar ingeniería inversa del código que comprueba los números de validez (si está disponible).

Si sabe que el algoritmo se extrae de un subconjunto más pequeño que "cada posible algoritmo", entonces podría ser posible. Sin embargo, los algoritmos pueden ser sólo la mitad de la historia -. También está el caso en que los multiplicadores, la potencia y la envolvente de los puntos de cambio, incluso utilizando el mismo algoritmo

Otros consejos

paxdiablo es correcta, y no se puede adivinar el algoritmo sin hacer ningún otro supuesto (o simplemente tener todo el espacio de la muestra - a continuación, se puede definir el algoritmo mediante una tabla de consulta).

Sin embargo, si el dígito de comprobación se calcula utilizando una fórmula lineal dependiente de los "dígitos de datos" (que es un caso muy común, como se puede ver en el artículo de Wikipedia), dado suficientes muestras puede utilizar eliminación Euler.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top