Hace tiempo escribí sobre como crear números de longitud fija con algoritmo de luhn en PHP, esto es... tomando un número cualquiera dejarlo con una longitud fija y añadiendo un dígito verificador, útil para cosas tan simples como tener una forma rápida de validar que un número de referencia es válido (en estructura al menos), para por ejemplo etiquetar un producto con un código de barras generado a partir de un ID de producto y su dígito verificador.
Los dígitos verificadores se usan desde en tarjetas de crédito, hasta en números de referencia de pagos en bancos, en el OXXO, etcétera. La implementación es muy sencilla, en el ejemplo mencionado al inicio está en PHP pero hoy lo hemos migrado a Swift , como ejercicio mental. El código está en mi cuenta de github tanto de Swift como de PHP.
https://panchito-kardashian.tar.mx/media/2017/10/codigo-verificador-base10-swift.png