(bits, largo, tipo) → (N, zeta)
Permite calcular las constantes que corresponden a firmas ic con distintos parámetros.
Nota:
El módulo ic_ots ya incluye constantes precalculadas para un rango amplio de parámetros y usos distintos.
El objetivo de ic_constantes es ilustrar cómo se calculan esas constantes.
Permiten ajustar la seguridad, el tamaño de la firma y el tipo de constantes.
bits: Cantidad de bits usados para representar el mensaje que se va a firmar. Por ejemplo, con bits=256 se pueden representar hasta 2256 mensajes distintos.
largo: Entero (>= 2) que determina el tamaño de la firma, en cantidad de hashes.
tipo: Tipo de constantes (N, zeta). Permite ajustar el algoritmo entre constantes óptimas para firmar rápido y constantes óptimas para verificar rápido. Valores:
'v' o 'ver': Constantes óptimas para verificar rápido, a expensas del tiempo necesario para firmar.
'a' o 'aprox': Constantes que aproximan los tiempos óptimos para verificar (dentro de un umbral del 1.5%), pero son bastante más rápidas para firmar.
's' o 'sig': Constantes óptimas para firmar rápido, a expensas del tiempo de verificación (en inglés, sign=firmar).
'1/s' o '1/sig': Constantes de modo inverso óptimas para firmar rápido, a expensas del tiempo de verificación (en inglés, sign=firmar).
tolerancia: Parámetro usado junto con tipo='a'. Determina un umbral de tolerancia (en porcentaje) respecto del tiempo de verificación óptimo.
Para un resultado exacto, usar el módulo de python fractions.Fraction
. Ejemplo: el parámetro tolerancia=Fraction('10/15')
fija una tolerancia de 1.5%.
mostrar: Si mostrar=True (verdadero), se muestran en pantalla resultados intermedios mientras se calculan las constantes.