2017-12-29 39 views
-2

は、ここに私のコードです:例外:不正なキーサイズ

import java.security.Security; 
import java.security.spec.KeySpec; 
import javax.crypto.SecretKey; 
import javax.crypto.spec.PBEParameterSpec; 
import javax.crypto.Cipher; 
import java.util.Base64; 
import java.security.Provider; 
import javax.crypto.spec.PBEKeySpec; 
import javax.crypto.SecretKeyFactory; 

public class JavaFiddle { 
    public static void main(String[] args) throws Exception { 
     String algorithm = "PBEWITHSHAAND3-KEYTRIPLEDES-CBC"; 
     String password = "eKhfdPKO54OddrfgghuBGHsA5BGTYHon"; 
     byte[] salt = {-87, -101, -56, 50, 86, 52, -29, 3}; 
     int iterations = 19; 

     String text = "foobar"; 

     Provider bouncy = new org.bouncycastle.jce.provider.BouncyCastleProvider(); 
     Security.addProvider(bouncy); 

     KeySpec keySpec = new PBEKeySpec(password.toCharArray(), salt, iterations); 
     SecretKey key = SecretKeyFactory.getInstance(algorithm, bouncy).generateSecret(keySpec); 

     Cipher cipher = Cipher.getInstance(algorithm, bouncy); 
     cipher.init(1, key, new PBEParameterSpec(salt, iterations)); 

     System.out.println(new String(Base64.getEncoder().encode(cipher.doFinal(text.getBytes("UTF8"))))); } 
} 

私はそれを実行するために使用しているコマンドはjava -classpath "bcprov-jdk15on-158.jar;." JavaFiddleです。

java -versionこれを出力:

java version "1.8.0_151" 
Java(TM) SE Runtime Environment (build 1.8.0_151-b12) 
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode) 
+0

を参照してくださいJCE(Java Cryptography Extension)をインストールする必要があると思いますあなたはそれ、これをしようとしていただけませんjarファイルが 'JavaFiddle.java'のような同じ場所にあると考えていますか? 'java -cp '; bcprov-jdk15on-158.jar;" JavaFiddle' –

+0

@ N00bPr0grammer - 同じもの。 – neubert

+0

私のコメントを編集しました、ちょっと - チェックしてください! –

答えて

関連する問題