2011-11-17 18 views
6

Esiste un metodo nativo semplice in Java per crittografare/decrittografare una stringa con una chiave? Non mi interessa davvero quale tipo di crittografia (AES, DES, ecc.), Mi interessa solo che è legato da una chiave e non facilmente infrangibile.Un metodo di codifica/decrittografia nativa semplice in Java

Idealmente, vorrei che fosse una soluzione di una riga in questo modo:

String encryptedString = NativeEncryptionClass.encrypt("this is the data", "key123"); 

Grazie

+0

Hai anche provato a Google per * AES Java *? – Joao

+0

Perché nativo ....? – gd1

+0

Perché una linea ...? –

risposta

3

Non sono sicuro che si può fare in un [legiable] one-liner, ma è possibile ottenere semplice crittografia simmetrica in modo relativamente facile - dare un'occhiata al seguente esempio:

PrivateExample using DES

ho usato la biblioteca Bouncy Castle con buoni risultati in passato.

+0

Meglio usare AES. Il DES è obsoleto e lento. – rossum

2

Se per nativo si intende, non dipende da librerie specifiche della piattaforma, forse jasypt potrebbe essere interessante per voi.

0

può essere che si dovrebbe provare a utilizzare semplice XOR crittografia

+1

Downvoter: In realtà, XOR con un pad singolo è la migliore crittografia possibile (se si dispone di un modo sicuro per comunicare/memorizzare il "pad"). –

+0

@HotLicks: la risposta dice qualcosa su OTP? "Simple XOR" da solo potrebbe anche significare un'implementazione di ROT13. –

+0

@TheTerribleSwiftTomato - Forse, forse no. –

-1
import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 

public class SimpleMD5Example { 

    public static void main(String[] args) { 
     String passwordToHash = "0"; 
     String generatedPassword = null; 
     try { 
      // Create MessageDigest instance for MD5 
      MessageDigest md = MessageDigest.getInstance("MD5"); 
      // Add password bytes to digest 
      md.update(passwordToHash.getBytes()); 
      // Get the hash's bytes 
      byte[] bytes = md.digest(); 
      System.out.println(bytes); 

      // This bytes[] has bytes in decimal format; 
      // Convert it to hexadecimal format 
      StringBuilder sb = new StringBuilder(); 
      for (int i = 0; i < bytes.length; i++) { 
       sb.append(Integer.toString((bytes[i] & 0xff), 16).substring(1)); 

      } 
      // Get complete hashed password in hex format 
      generatedPassword = sb.toString(); 
     } catch (NoSuchAlgorithmException e) { 
      e.printStackTrace(); 
     } 
     System.out.println(generatedPassword); 
    } 

}