【发布时间】:2020-06-14 00:23:48
【问题描述】:
public byte[] encryptWithAesKey(byte[] key, byte[] iv, byte[] data) {
try {
IvParameterSpec ivSpec = new IvParameterSpec(iv);
Cipher cipher = Cipher.getInstance("AES/CTR/NoPadding");
SecretKeySpec aesKey = new SecretKeySpec(key, "AES");
cipher.init(Cipher.ENCRYPT_MODE, aesKey, ivSpec);
return cipher.doFinal(data);
} catch (Exception e) {
System.out.println("Error while encrypting: " + e.toString());
}
return null;
}
在 javax.crypto.spec.SecretKeySpec.(SecretKeySpec.java:96)
这会返回异常,但在 android 28 更低版本中运行良好。
StackTrace如下:
System.out: encryptwithAES:[B@b8979fbIV:[B@78d7813data:[B@3841a50
System.err: java.lang.IllegalArgumentException: Empty key
System.err: at javax.crypto.spec.SecretKeySpec.<init>(SecretKeySpec.java:96)
System.err: at com..Security.SecurityController.encryptWithAesKey(SecurityController.java:93)
System.err: at com..Controllers.Files.FileController.encryptAndSaveFile(FileController.java:75)
System.err: at com..Controllers.Files.FileControllerRN.encryptAndSaveFileRN(FileControllerRN.java:68)
System.err: at java.lang.reflect.Method.invoke(Native Method)
System.err: at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)
System.err: at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:151)
System.err: at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
System.err: at android.os.Handler.handleCallback(Handler.java:883)
System.err: at android.os.Handler.dispatchMessage(Handler.java:100)
System.err: at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:27)
System.err: at android.os.Looper.loop(Looper.java:214)
System.err: at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:226)
System.err: at java.lang.Thread.run(Thread.java:919)
【问题讨论】:
-
嗯,您的密钥似乎由零字节组成。哪一部分不清楚?
-
1) 为什么你设置了标签“nullpointerexception”,但在标题中却写了IllegalArgumentException?请显示整个堆栈跟踪。
-
@mentallurg 添加。
标签: java exception encryption cryptography illegalargumentexception