Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“线程中的异常”;“主要”;java.security.InvalidKeyException:密钥大小非法_Java_Bouncycastle - Fatal编程技术网

“线程中的异常”;“主要”;java.security.InvalidKeyException:密钥大小非法

“线程中的异常”;“主要”;java.security.InvalidKeyException:密钥大小非法,java,bouncycastle,Java,Bouncycastle,这是我的密码: 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.crypt

这是我的密码:

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)

我认为您需要安装Java加密扩展(JCE),请参阅重要说明


考虑到jar文件与
JavaFiddle.java
位于同一位置,您介意这样尝试吗
java-cp.;bcprov-jdk15on-158.jar;“JavaFiddle
@N00bPr0grammer-同样的东西。刚刚编辑了我的评论-请检查@N00bPr0grammer-同样的东西。