Traté de buscar en stackoverflow una respuesta a esta pregunta en particular, pero no pude encontrar una buena respuesta.
La API de BouncyCastle ofrece una tonelada de algoritmos de cifrado diferentes para .NET. En este caso tengo que seleccionar un algoritmo de cifrado para el siguiente caso de uso:
Cifrar varios miles de cadenas cortas para almacenarlas en un archivo sin cifrar, con una longitud típica de 10 a 30 caracteres.
El cifrado debe ser solo moderadamente seguro, todas las cadenas se cifrarán con la misma clave pero con un vector de inicialización diferente. No se necesitan cosas como autorización (como en AES-GCM).
¿Qué algoritmo de cifrado es más rápido y sencillo de aplicar para cifrar y descifrar un conjunto de varios miles de cadenas pequeñas? Guardaré los datos cifrados de cada cadena como BASE64 en el archivo.
¡Gracias por tu consejo!
Ese procesador todavía tiene AES-NI, por lo que usarlo a través de AES.Create parece lo más lógico. Una solución de gama alta sería crear el modo CTR a partir de ECB (y almacenar en caché los flujos de claves).
De lo contrario, está buscando un cifrado de flujo rápido en el software. Puede verificar si Salsa20 está funcionando para usted. Lamentablemente, ese es el único cifrado compatible con eStream que puedo encontrar en Bouncy Castle para C#.
Tenga en cuenta que es posible que desee buscar subprocesos múltiples y, sin duda, verificaría si es posible usar un nonce secuencial cuando se usa un cifrado de flujo, ya que generar un valor aleatorio de 128 bits para cada cifrado parece un desperdicio.