【发布时间】:2020-04-20 23:15:49
【问题描述】:
我收到以下错误,我有点卡住了: 线程“main”中的异常
java.security.InvalidKeyException: Illegal key size or default parameters
at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1011)
at javax.crypto.Cipher.implInit(Cipher.java:786)
at javax.crypto.Cipher.chooseProvider(Cipher.java:849)
at javax.crypto.Cipher.init(Cipher.java:1213)
at javax.crypto.Cipher.init(Cipher.java:1153)
at net.nakou.indie.wtext.engineClass.Session.cryptString(Session.java:52)
我被困住了,因为我找到的所有答案都是关于 Java 加密扩展 (JCE),它通常包含在 android SDK 中。所以我认为我的问题不是这个。
我一定忘记了什么,但我找不到什么。可能是我的代码错了(这是我第一次用Java加密的方法,我不是专家,下面的代码主要是一些教程的复制粘贴)。
我使用这段代码来加密和解密一个字符串:
public String cryptString(String s) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException, BadPaddingException, IllegalBlockSizeException {
byte[] KeyData = this.cryptKey.getBytes();
SecretKeySpec KS = new SecretKeySpec(KeyData, "Blowfish");
Cipher cipher = Cipher.getInstance("Blowfish");
cipher.init(Cipher.ENCRYPT_MODE, KS);
String ret = new String(cipher.doFinal(s.getBytes("UTF-8")));
return ret;
}
public String decryptString(byte[] s) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
byte[] KeyData = this.cryptKey.getBytes();
SecretKeySpec KS = new SecretKeySpec(KeyData, "Blowfish");
Cipher cipher = Cipher.getInstance("Blowfish");
cipher.init(Cipher.DECRYPT_MODE, KS);
String ret = new String(cipher.doFinal(s));
return ret;
}
还有以下键:
private String cryptKey = "qkjll5@2md3gs5Q@FDFqf";
谢谢你们。
【问题讨论】:
-
长话短说,无论它是否是 ADK 的一部分,您都需要像任何 java 应用程序一样在 $java/jre/lib/security 中进行更改。