Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    26

    [Java] Convert string to key

    Ciao a tutti!
    Sto realizzando un programma in Java che implementa un processo crittografico, ma ho un problema che non riesco a risolvere.
    Quello che voglio fare, infatti, è crittare mediante una certa chiave (oggetto di tipo key) non una stringa qualsiasi, ma un'altra chiave (quindi un altro oggetto di tipo key).
    Tuttavia i metodi encrypt e decrypt richiedono che l'oggetto da crittare che bisogna passare debba essere necessariamente di tipo string.
    Allora faccio questa semplice procedura: genero l'oggetto di tipo key da crittare; lo converto in string; lo critto con l'altra chiave che ho generato. Fin qui tutto a posto.

    Non riesco però a fare il processo opposto: cioè passare da un oggetto di tipo string all'oggetto di tipo key corrispondente.

    Qualcuno mi sa aiutare?
    Ho provato in diversi modi, ma fin qui non ci sono riuscito.

    Grazie mille!
    Ciao Edoardo

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

    Re: [Java] Convert string to key

    Originariamente inviato da edomatch
    Qualcuno mi sa aiutare?
    Certo .... se spiegassi meglio di quali classi per la crittografia stai parlando (che è sta 'key'???)
    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
    Sep 2002
    Messaggi
    26
    Allora per crittare faccio così:

    Key key;
    byte plainText[];

    Cipher cipher;
    byte[] cipherText = new byte[0];

    cipher = Cipher.getInstance(DESede);
    cipher.init(Cipher.ENCRYPT_MODE, key);
    cipherText = (cipher.doFinal(plainText));

    key è un oggetto di tipo Key, che rappresenta cioè la chiave che uso per crittare
    plainText è il testo in chiaro che voglio crittare, espresso come un array di byte
    faccio quindi poi il processo di codifica utilizzando il TripleDES (DESede): il testo crittato che ottengo è rappresentato da cipherText, naturalmente anche lui espresso in byte

    Quindi quello che riesco a fare è passare dal testo in chiaro plainText a quello crittato cipherText: entrambi sono espressi come array di byte.

    Poi in modo analogo riesco a fare il processo inverso, passando quindi dal messaggio crittato cipherText a quello in chiaro plainText.

    Il problema è rappresentato dal fatto che il plainText che ho in realtà non è un oggetto di array di byte, ma è anch'esso una chiave, cioè un oggetto di tipo Key.
    Allora quello che ho fatto è generare il plainText non di tipo byte[], ma di tipo Key; a questo punto lo converto in un oggetto di tipo string e poi finalmente in un oggetto di tipo byte[]; a questo punto posso perciò crittarlo con le istruzioni che ho scritto all'inizio.
    Il cipherText che ottengo è quindi a questo punto espresso ancora come oggetto di tipo byte[].
    Mi manca a questo punto l'ultimo passo, che non riesco a risolvere.. Cioè come convertire il cipherText, oggetto di tipo byte[], nel cipherText di tipo Key.
    Il passaggio Key->byte[] sono riuscito a farlo, non riesco a fare invece byte[]->Key.

    Spero di essere stato un po' più chiaro.
    Grazie.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da edomatch
    Il passaggio Key->byte[] sono riuscito a farlo, non riesco a fare invece byte[]->Key.

    Spero di essere stato un po' più chiaro.
    Sì, un pochino di più (ma non quanto basta .... non ti sprecare eh..).

    Premetto che delle API sulla security non so nulla .... niubbio totale, se vogliamo dirlo in altro modo. Però non è necessario avere l'intelligenza di Einstein per andare a leggere (e capire) il javadoc delle API.

    Intanto quella 'Key' di cui tu parli è una interfaccia (java.security.Key). Basta leggere il javadoc per scoprire che c'è un metodo getEncoded() che ritorna un array di byte (e suppongo tu abbia usato proprio questo per la conversione Key -> byte[]).

    Il contrario .... beh nella interfaccia non c'è ovviamente nulla di utile. Bisogna quindi andare a vedere la implementazione specifica che hai usato. Le classi sono due: KerberosKey e SecretKeySpec. Quale hai usato? Entrambe comunque possono ricevere nel costruttore un array di byte.

    A questo punto spetta a te, meno niubbio di me sulla security, ricreare una nuova chiave da un array di byte usando il costruttore appropriato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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 © 2026 vBulletin Solutions, Inc. All rights reserved.