Cita:
Empezado por Al González
¿Qué tendrá de especial el algoritmo AES nativo de .NET para que no sea compatible con alguno de los componentes que has utilizado? ¿Qué dice la documentación de .NET sobre cuál variante de AES utiliza?
Saludos. 
|
El .Net utiliza el Rijndael y en la version 4 del framework ya esta la disponibilidad de usar la variante estandard del AES, pero la mas conocida y utilizada es la primera.
Sobre el enlace que me recomienda escafandra ya lo habia visto y probado, al igual que algunos 3 o 4 componentes mas para delphi (DCPcrypt, AESlib, etc.) que permiten usar el algoritmo AES, en su mayoria utilizan la variante Rijndael pero extrañamente no son compatibles unos con los otros, cada uno me arroja un cifrado diferente y solo los puedo descifrar con el mismo componente que lo genere.
Pero investigando sus codigo fuentes y analizando el que trae el framework del .Net puedo decir que estas "discrepancias" se debe a que cada uno de ellos utilizan algunas "maniobras" adicionales (o carecen de algunas) para generar el cifrado/descifrado final, como por ejemplo hashear la llave antes de utilizarla, uso de vectores de inicializacion por medio de un salt o segunda llave, algunos utilizan diferentes modos de encriptacion (cbc, cfb, cts, etc.), tamaño de bit para la llave (128, 192, 256). En fin, un sin numeros de variables que hace que cada libreria trabaje diferente.
Por lo menos la que trae .Net es muy flexible y completa, esta permite configurar cualquier caracteristica del cifrado a diferencia de los recursos que aparecen para delphi que son mas sencillos y sin acceso a cambiar algunas caracteristicas del cifrado, ya que estan desarrollado para que trabajen de una sola manera.
Bueno, como realmente necesito algun cifrado compatible con delphi y .Net, pense que la unica solucion es migrar el codigo fuente de algun algoritmo de cifrado desde delphi a .Net o viceversa y asegurarme que trabajen exactamente iguales, pero como soy mas diestro entendiendo C# que pascal/delphi a un bajo nivel, pues me es mas facil y claro digerir un codigo fuente en C# para luego traducirlo a delphi. Asi que me tope con las librerias de seguridad de BouncyCastle, super completas, con muchos algoritmo de cifrados y su respectivo codigo fuente (open source), probe el AES de Rijndael, permite cambiar cualquier caracteristicas del cifrado, muy flexible, y lo es mejor: compatible con el mismo que trae el Framework de microsoft.
Ya comencé a migrar un algoritmo mas sencillo que el AES, pero funcional (no quiero quemar mucha pestaña), tambien implemente una libreria mas sencilla de invocar y trabajar en .Net con el BouncyCastle ya que esta no viene con nada de documentacion y es un poco compleja para ponerla a trabajar. Luego que termine, liberare los codigos para que cualquiera pueda usarlos en delphi y .Net