2008-09-08 23 views
5

Necesito almacenar algunos datos confidenciales cifrándolos con al menos una clave de 128 bits. Investigué en el paquete javax.crypto y encontré que hay ciertos nombres de cifrado, como PBEWithMD5AndDES o PBEWithSHA1AndDESede que proporciona cifrado hasta 56 bit y 80 bit (http://en.wikipedia.org/wiki/DESede).Encriptación de datos de 128 bits con Java

Remití las publicaciones de otros tipos, pero esas están principalmente usando RSA y, en mi entender, RSA es generalmente adecuado para encriptar los datos de comunicación (con par de claves públicas y privadas). Mi necesidad es diferente, solo quiero almacenar los datos y recuperarlos descifrándolos. Por lo tanto, no necesito ningún par de claves público-privadas.

Háganme saber si tiene alguna idea al respecto.

Respuesta

8

Use Advanced Encryption Standard (AES). Admite longitudes de clave de 128, 192 o 256 bits.

El algorithm es simple. El sitio web de Sun Java tiene un cifrado section explaining how to do AES en Java.

De Wikipedia ...

... el Advanced Encryption Standard (AES), también conocido como Rijndael , es un cifrado de bloques adoptado como un estándar de cifrado por el gobierno de EE.UU. . Se ha analizado ampliamente y ahora se utiliza en todo el mundo, como fue el caso con su predecesor, el cifrado de datos Standard (DES) ...

Así como una regla de oro que se supone que no use DES o sus variantes porque está siendo eliminado.

A partir de ahora, es mejor usar AES. Hay otras opciones como Twofish, Blowfish etc. también. Tenga en cuenta que Twofish se puede considerar como una versión avanzada de Blowfish.

3

Debe descargar e instalar el archivo de políticas JCE de fuerza ilimitada para su JDK. Para JDK 6, está en http://java.sun.com/javase/downloads/index.jsp en la parte inferior.

+0

¿No es necesario sólo para AES-192 o 256? Creo que AES-128 no requiere los archivos de políticas de JCE de fuerza ilimitada. – halluc1nati0n

0

No soy un experto en cifrado de ninguna manera (así que tome esta sugerencia con un grano de sal), pero he usado Blowfish antes, y creo que puede usarlo para lo que necesite. También hay un algoritmo más nuevo del mismo tipo llamado Twofish.

Aquí hay un website with a Java implementation, pero tenga cuidado con la licencia (dice gratis para uso no comercial). Puede encontrar ese enlace también desde Bruce Schneier's website (el creador de ambos algoritmos).

+0

el enlace en "sitio web con implementación java" está muerto. por favor actualizarlo ... – vettipayyan

2

Combinar 3 respuestas diferentes da lo que creo que es la respuesta correcta.

Descargue las bibliotecas de cifrado de Bouncycastle, luego debe descargar la "Política de jurisdicción de fuerza ilimitada" de Oracle (los archivos se encuentran en la parte inferior de la página de descarga). Asegúrese de leer el archivo Léame sobre cómo instalarlo.

Una vez que haya hecho esto, y utilizando el código de muestra proporcionado con el paquete Bountycastle, podrá encriptar sus datos. Puede ir con una implementación triple de DES, que le dará una clave de 112 bits (a menudo denominada de 128 bits, pero solo 112 de ellos son realmente seguros), o como se dijo anteriormente, puede usar AES. Mi dinero estaría en AES.

+0

Heads Up: Es BounCycastle, no BounTycastle – lImbus

0

Gracias Michael, después de probar muchas cosas en JCE, finalmente me conformé con bouncycastle.

JCE admite AES para el cifrado y PBE para el cifrado basado en contraseña, pero no admite la combinación de ambos. Yo quería lo mismo y que encontré en Bouncycastle.

El ejemplo está en: http://forums.sun.com/thread.jspa?messageID=4164916

Cuestiones relacionadas