Visualizzazione dei risultati da 1 a 7 su 7

Discussione: codifica password

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343

    codifica password

    Salve ragazzi esiste qualche algoritmo per la codifica della password che potete postarmi oppure darmi un link?
    In php era una cosa banalissima , bastava aggiungere md5(password) nella query è la password viene codificata...in java non penso sia la stessa cosa.

    saluti vale

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: codifica password

    Originariamente inviato da 84morena
    Salve ragazzi esiste qualche algoritmo per la codifica della password che potete postarmi oppure darmi un link?
    In php era una cosa banalissima , bastava aggiungere md5(password) nella query è la password viene codificata...in java non penso sia la stessa cosa.
    Anche in Java puoi calcolare un MD5 o simile. Non è così immediato come in PHP. Esistono librerie esterne per le funzioni "hash" oppure puoi usare la API standard che si trova nel package java.security (la classe MessageDigest) con un minimo lavoro di codice.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    ciao potresti postae qualche classe di crittografia funzionante.
    saluti

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    Ragazzi ho torvato questa classe sul web che crypta la password,vorrei eliminare il costruttore, chi mi modifica questa classe oppure mi spiega come fare?....vorrei utilizzarla senza il costruttore....
    codice:
    package beans;
    import java.security.spec.*;
    import javax.crypto.*;
    import javax.crypto.spec.*;
    import java.io.*;
    
    public class Crypt
    {
    	Cipher ecipher;
    	Cipher dcipher;
    
    	// 8-byte Salt
    	byte[] salt = {(byte)0xA9, (byte)0x9B, (byte)0xC8, (byte)0x32,
                    (byte)0x56, (byte)0x35, (byte)0xE3, (byte)0x03
      };
    
    	// Iteration count
    	int iterationCount = 19;
    
    	public Crypt(String passPhrase)
    	{
    		try
    		{
    			// Create the key
    			KeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), salt, iterationCount);
    			SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(keySpec);
    			ecipher = Cipher.getInstance(key.getAlgorithm());
    			dcipher = Cipher.getInstance(key.getAlgorithm());
    
    			// Prepare the parameter to the ciphers
    			AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);
    
    			// Create the ciphers
    			ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
    			dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec);
    		}
    		catch (java.security.InvalidAlgorithmParameterException e)
    		{
    		}
    		catch (java.security.spec.InvalidKeySpecException e)
    		{
    		}
    		catch (javax.crypto.NoSuchPaddingException e)
    		{
    		}
    		catch (java.security.NoSuchAlgorithmException e)
    		{
    		}
    		catch (java.security.InvalidKeyException e)
    		{
    		}
    	}
    
    	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;
    	}
    
            /*
    	public static void main(String[] args)
    	{
    		Crypt a = new Crypt("prova");
    		//a.encrypt(password);
    		//System.out.println(Crypt("prova"));
    		a.encrypt("prova");
    		a.decrypt("prova");
    	}
            
            */
    
    
    }
    grazie

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da 84morena
    Ragazzi ho torvato questa classe sul web che crypta la password
    Volevo solo chiarirti che una cosa è "criptare" (o "cifrare") qualcosa e un'altra cosa è calcolare un "hash" (MD5, SHA1, ecc....) di qualcosa. Sono due cose differenti.

    E riguardo alla trattazione di una "password", beh, dipende da cosa devi farci .... ma ad esempio quando si memorizza una password in un DB, tipicamente si memorizza il suo "hash".
    Se quindi vuoi calcolare il MD5 di una stringa, beh, si può fare, più semplicemente (con il MessageDigest) e con non troppe righe di codice.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Scusa ma non avevi semplicemente bisogno di un algoritmo di hashing?
    Quello che hai postato tu è una vera e propria cifratura, a chiave simmetrica segreta, che quindi può essere decifrata.

    Se ti serve solo fare l'md5 è molto più semplice:
    codice:
    //Instanzia la classe
    MessageDigest md=MessageDigest.getInstance("MD5");
    md.reset();
    
    //Calcola l'md5, restituendolo sottoforma di array di byte dell'array di byte
    byte[] hashMD5.digest(stringaOriginale.getBytes());
    Ciao
    La differenza fra la genialità e la stupidità è che la genialità ha i suoi limiti.


  7. #7
    Correzione:
    la riga
    codice:
    byte[] hashMD5.digest(stringaOriginale.getBytes());
    è sbagliata: deve essere così
    codice:
    byte[] hashMD5=md.digest(stringaOriginale.getBytes());
    Scusate...
    La differenza fra la genialità e la stupidità è che la genialità ha i suoi limiti.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.