Bien, primero suena extraño que estás codificando un "id_usuario" (que me suena como un nombre de usuario), lo cual me parece una información relativamente pública, y no una contraseña o algo similar en secreto, pero la pregunta es realmente acerca del cifrado, así que estoy divagando ...
"Bastante fuerte" para cualquier algoritmo de encriptación se evalúa por el tiempo que demorará descifrar el texto sin tener la clave (suponiendo que hayas ocultado tu clave secreta de una buena manera). Ningún algoritmo es "perfecto", excepto el clásico One Time Pad, que es un buen ejemplo académico, pero no tan utilizable en el 99% de los casos, ya que requiere el mismo espacio de claves de tamaño que los datos cifrados, por lo que estará generando constantemente y almacenar una nueva clave, lo que plantea sus propios problemas de seguridad.
Entonces ... cualquier algoritmo realista se considera "suficientemente fuerte" si demorará más en descifrar el material sin la clave de lo que vale la información. Entonces, si la información corresponde a mis planes de almuerzo para mañana, es probable que mi algoritmo de cifrado solo tenga que demorar a un atacante las 24 horas, momento en el que el evento habrá finalizado, y no importa porque no pueda encontrarme Ya no ... pero puede importar por años, si mi almuerzo fue un evento histórico o algo así.
Por lo tanto, los factores de cálculo de craqueo de cifrado incluyen:
- ¿Cuáles son las debilidades del algoritmo? Algunos algoritmos pueden tener conjuntos de claves débiles que son más fáciles de descifrar, otros pueden demostrarse que agregan poco valor (algunas formas de DES)
-
¿Cuál es el tamaño del espacio de la clave? Si todas las claves son igualmente seguras, entonces la forma obvia de descifrar el algoritmo es probar cada clave posible del tamaño dado: cuántas claves es un factor de tamaño de almacenamiento y la naturaleza de cómo se eligen las claves (por ejemplo, los números primos se usan en encriptación asimétrica)
-
¿Qué tan difícil es probar un descifrado? ¿Cuánto tiempo tomará probar una prueba con una opción clave dada?
Entonces ... en un algoritmo simple, el tiempo para descifrar puede ser:
# of keys in key space X time to test a key
Por lo general, se tiene en cuenta cuántos recursos puede razonablemente esperar que tenga un hacker. Una pequeña organización puede tener 10-50 máquinas. Un estado nación puede tener millones. ¿Cuál es la naturaleza de la amenaza: cuánto poder de cómputo pueden tener razonablemente? No necesariamente asume que está limitado por su poder de compra en Best Buy: si son técnicamente sofisticados, tienen una red de bots masiva y paralela de software malintencionado en máquinas de usuarios inocentes que realizan sus cálculos.