2013-01-07 11 views
20

Ho cercato di convertire una matrice di byte nella sua SecretKey originale, ma non ho più idee. Il tentativo più promettente era questa:convertire la matrice di byte in chiave segreta

byte[] encodedKey  = Base64.decode(stringKey); 
SecretKey originalKey = SecretKeySpec(encodedKey, 0, encodedKey.length, "AES") 

trovato qui: Converting Secret Key into a String and Vice Versa

che sto utilizzando l'importazione javax.crypto.spec.SecretKeySpec, in modo che il costruttore per SecretKeySpec deve essere utilizzato in modo corretto, almeno con riferimento a http://docs.oracle.com/javase/1.5.0/docs/api/javax/crypto/spec/SecretKeySpec.html.

Tuttavia, ottengo sempre "Il metodo SecretKeySpec non è definito per ... [Nome classe]", che proprio non capisco.

Immagino che sia solo un piccolo errore, ma non riesco a capirlo. Qualcuno può aiutarmi, per favore?

+1

Hai un punto e virgola alla fine del costruttore? :) – asteri

risposta

37

È necessario utilizzare la parola chiave new per chiamare il costruttore e creare l'oggetto.

SecretKey originalKey = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES"); 

Quando si tenta di chiamare senza new, il compilatore pensa che potrebbe essere un metodo che hai definito all'interno di quella classe, da qui il messaggio di errore.

+0

OMG, grazie, sicuramente sono rimasto seduto davanti allo schermo troppo a lungo ... –

+0

:) Succede a tutti noi. – asteri

+0

Lo so, ancora - è bello sapere di non essere solo ;-) grazie ancora! –