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
Respuesta
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) {
}
Pratik, ¿Qué es DES en la instancia get? –
@ 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
qué es byte [] enc = ecipher.doFinal (utf8); – nightograph
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.
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.
Muchas gracias señor por su respuesta y guía señor ... leeré esos libros específicos ... – deepa
DES simple cifrado de Trabajo
Necesita Clase de Trabajo DES Consulte this Blog.
- 1. Encriptar, desencriptar usando Rails
- 2. Encriptar y desencriptar con codificación AES y Base64
- 3. Rijndael 256 Encriptar/desencriptar entre C# y php?
- 4. Encriptar y descifrar cadena con clave PHP
- 5. GnuPG: ¿Cómo encriptar/desencriptar archivos usando una determinada clave?
- 6. PGP Encriptar y descifrar
- 7. Llamar a GnuPG en Java a través de un Runtime Process para encriptar y desencriptar archivos: el descifrado siempre cuelga
- 8. ¿Cómo encriptar una cadena en .NET?
- 9. ¿Cómo encriptar o desencriptar con Rijndael y un tamaño de bloque de 256 bits?
- 10. Usando java para encriptar enteros
- 11. Encriptar contenido con php y java
- 12. Encriptar cadena en C# y descifrarla en Delphi
- 13. ¿Cómo puedo encriptar una cadena de consulta en asp.net?
- 14. Encriptar/Codificar una ID en la cadena de URL
- 15. Encriptar y descifrar usando PyCrypto AES 256
- 16. Criptografía Java Bouncy Castle - Encriptar con AES
- 17. Desencriptar el script Perl ofuscado
- 18. Encriptar y descifrar una lista de arreglos <String>
- 19. ¿Podemos encriptar una carpeta en android?
- 20. Reemplazar todo "(" y ")" en una cadena en Java
- 21. Java - Faltan caracteres finales al encriptar usando blowfish
- 22. Encriptar en Ruby y descifrar en Java - ¿Por qué no funciona?
- 23. ¿Cuál es la mejor manera de encriptar una cadena muy corta en PHP?
- 24. encriptar columna en la tabla
- 25. ¿Cómo encriptar una columna específica en una tabla MySQL?
- 26. Forma de encriptar una sola int
- 27. Encriptar servicios de aplicación ConnectionString
- 28. ¿Debo encriptar web.config en un alojamiento compartido?
- 29. Desencriptar la aserción cifrada utilizando SAML 2.0 en Java con OpenSAML
- 30. Dividir una cadena Java con '.'
posible duplicado de [Cómo cifrar la cadena en Java] (http://stackoverflow.com/questions/1205135/how-to-encrypt-string-in-java) –
http://www.rgagnon.com/ javadetails/java-0400.html –