web-dev-qa-db-fra.com

convertir le tableau d'octets en clé secrète

J'ai essayé de convertir un tableau d'octets en sa SecretKey d'origine, mais je n'ai plus d'idées. La tentative la plus prometteuse était celle-ci:

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

trouvé ici: Conversion de la clé secrète en une chaîne et vice versa

J'utilise l'import javax.crypto.spec.SecretKeySpec, donc le constructeur de SecretKeySpec doit être utilisé correctement, en se référant au moins à http://docs.Oracle.com/javase/1.5.0/docs/ api/javax/crypto/spec/SecretKeySpec.html .

Néanmoins, je reçois toujours "La méthode SecretKeySpec n'est pas définie pour ... [Nom de classe]" - ce que je ne comprends tout simplement pas.

Je suppose que ce n'est qu'une erreur mineure, mais je ne peux pas le comprendre. Quelqu'un peut-il m'aider ici?

27
Horstus Horax

Vous devez utiliser le mot clé new pour appeler le constructeur et créer l'objet.

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

Lorsque vous essayez de l'appeler sans new, le compilateur pense qu'il peut s'agir d'une méthode que vous avez définie dans cette classe, d'où votre message d'erreur.

45
asteri