2010-12-20 157 views
11

Soy nuevo en la criptografía. Deseo aprender a cifrar y descifrar el texto en un archivo ... cuando remito los artículos relacionados en red. ¿Tenía dudas de que el texto cifrado sea el mismo para el texto individual cuando el cifrado se realiza varias veces en el mismo texto? ¿Alguien puede aclarar mi duda?Encriptar y desencriptar una cadena en java

+3

posible duplicado de [Cómo cifrar la cadena en Java] (http://stackoverflow.com/questions/1205135/how-to-encrypt-string-in-java) –

+0

http://www.rgagnon.com/ javadetails/java-0400.html –

Respuesta

22
public String encrypt(String str) { 
     try { 
      // Encode the string into bytes using utf-8 
      byte[] utf8 = str.getBytes("UTF8"); 

      // Encrypt 
      byte[] enc = ecipher.doFinal(utf8); 

      // Encode bytes to base64 to get a string 
      return new sun.misc.BASE64Encoder().encode(enc); 
     } catch (javax.crypto.BadPaddingException e) { 
     } catch (IllegalBlockSizeException e) { 
     } catch (UnsupportedEncodingException e) { 
     } catch (java.io.IOException e) { 
     } 
     return null; 
    } 

    public String decrypt(String str) { 
     try { 
      // Decode base64 to get bytes 
      byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(str); 

      // Decrypt 
      byte[] utf8 = dcipher.doFinal(dec); 

      // Decode using utf-8 
      return new String(utf8, "UTF8"); 
     } catch (javax.crypto.BadPaddingException e) { 
     } catch (IllegalBlockSizeException e) { 
     } catch (UnsupportedEncodingException e) { 
     } catch (java.io.IOException e) { 
     } 
     return null; 
    } 
} 

He aquí un ejemplo que utiliza la clase:

try { 
    // Generate a temporary key. In practice, you would save this key. 
    // See also Encrypting with DES Using a Pass Phrase. 
    SecretKey key = KeyGenerator.getInstance("DES").generateKey(); 

    // Create encrypter/decrypter class 
    DesEncrypter encrypter = new DesEncrypter(key); 

    // Encrypt 
    String encrypted = encrypter.encrypt("Don't tell anybody!"); 

    // Decrypt 
    String decrypted = encrypter.decrypt(encrypted); 
} catch (Exception e) { 
} 
+1

Pratik, ¿Qué es DES en la instancia get? –

+0

@ user775: el método getInstance (Algoritmo de cadena) de la clase javax.crypto.KeyGenerator, devuelve objetos javax.crypto.KeyGenerator para el algoritmo. Y una java.security.Key que es una clave de cifrado del algoritmo DES válida. – Pratik

+11

qué es byte [] enc = ecipher.doFinal (utf8); – nightograph

2

había duda de que si el texto cifrado será igual para solo texto cuando el cifrado realizado por múltiples veces en una mismo texto?

Esto depende en gran medida del algoritmo de cifrado que utilice:

  • Uno de los objetivos de algunos mayoría de los algoritmos/(maduras) es que el texto cifrado es diferente cuando el cifrado realiza dos veces. Una razón para hacer esto es que un atacante sabe cómo se conoce el texto simple y el encriptado no puede calcular la clave.
  • Otro algoritmo (principalmente algoritmos hash de cifrado unidireccional) como MD5 o SHA, basado en el hecho de que el texto hash es el mismo para cada encriptación/hash.
0

Ya sea encriptada ser el mismo cuando texto plano se encripta con la misma clave depende de algoritmo y protocolo. En la criptografía hay un vector de inicialización IV: http://en.wikipedia.org/wiki/Initialization_vector que se usa con varias cifras hace que el mismo texto simple encriptado con la misma clave proporcione varios textos de cifrado.

Te aconsejo que leas más sobre criptografía en Wikipedia, Bruce Schneier http://www.schneier.com/books.html y "Criptografía inicial con Java" de David Hook. El último libro está lleno de ejemplos de uso de la biblioteca http://www.bouncycastle.org.

Si usted está interesado en la criptografía la hay Cryptool: http://www.cryptool.org/Cryptool es una aplicación gratuita de código abierto de e-learning, que se utiliza en todo el mundo en la implementación y análisis de algoritmos criptográficos.

+0

Muchas gracias señor por su respuesta y guía señor ... leeré esos libros específicos ... – deepa

0

DES simple cifrado de Trabajo

Necesita Clase de Trabajo DES Consulte this Blog.

Cuestiones relacionadas