Saltar al contenido

Cifrado Javascript AES

Posteriormente a consultar especialistas en el tema, programadores de diversas ramas y profesores dimos con la solución a la cuestión y la plasmamos en esta publicación.

Solución:

JSAES es una poderosa implementación de AES en JavaScript. http://point-at-infinity.org/jsaes/

Aquí hay una página de demostración que usa slowAES.

slowAES fue fácil de usar. Diseñado lógicamente. Embalaje OO razonable. Admite perillas y palancas como IV y modo de cifrado. Buena compatibilidad con .NET/C#. El nombre es irónico; se llama “lento AES” porque no está implementado en C++. Pero en mis pruebas no fue demasiado lento.

Carece de un modo ECB. También carece de un modo CTR, aunque supongo que podría construir uno con bastante facilidad dado un modo ECB.

Se centra únicamente en el cifrado. Una buena clase complementaria que cumple con RFC2898 basada en contraseña key La derivación, en Javascript, está disponible en Anandam. Este par de bibliotecas funciona bien con las clases .NET análogas. Buena interoperabilidad. Aunque, en contraste con SlowAES, Javascript PBKDF2 es notablemente más lento que la clase Rfc2898DeriveBytes al generar keys.

No sorprende que técnicamente haya una buena interoperabilidad, pero el key El punto para mí fue que el modelo adoptado por SlowAES es familiar y fácil de usar. Descubrí que algunas de las otras bibliotecas de Javascript para AES son difíciles de entender y usar. Por ejemplo, en algunos de ellos no pude encontrar el lugar para configurar el IV, o el modo (CBC, ECB, etc). Las cosas no estaban donde yo esperaba que estuvieran. SlowAES no era así. Las propiedades estaban justo donde esperaba que estuvieran. Fue fácil para mí aprender, ya que estaba familiarizado con los modelos de programación criptográfica de Java y .NET.

El PBKDF2 de Anandam no estaba del todo en ese nivel. Admitía solo una única llamada a la función DeriveBytes, por lo que si necesita derivar tanto un key y un IV de una contraseña, esta biblioteca no funcionará, sin cambios. Alguna ligera modificación, y está funcionando bien para ese propósito.

EDITAR: Reuní un ejemplo de empaquetado de SlowAES y una versión modificada de PBKDF2 de Anandam en componentes de script de Windows. Usar este AES con un derivado de contraseña key muestra una buena interoperabilidad con la clase .NET RijndaelManaged.

EDIT2: la página de demostración muestra cómo usar este cifrado AES desde una página web. Usando las mismas entradas (iv, key, modo, etc.) compatibles con .NET le brindan una buena interoperabilidad con la clase .NET Rijndael. Puede hacer una “ver fuente” para obtener el javascript para esa página.

EDIT3

una adición tardía: la criptografía Javascript se considera dañina. Vale la pena leer.

En mis búsquedas de cifrado AES, encontré esto de algunos estudiantes de Standford. Afirma ser el más rápido por ahí. Admite cifrado CCM, OCB, GCM y Block. http://crypto.stanford.edu/sjcl/

Puedes añadir valor a nuestra información añadiendo tu experiencia en las ilustraciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *