我正在尝试解密byte[]
数组中的数据。在此区块内没有问题
try {
ByteBuffer buf = ByteBuffer.allocate(BUFFER_SIZE);
int bytesRead = 0;
long now;
byte[] arr;
String message;
String decrypted = null;
while (true) {
buf = ByteBuffer.allocate(BUFFER_SIZE);
bytesRead = machineClientSocketChannel.read(buf);
boolean isNotTrim=CommandConstants.commandContains(command);
logger.info("Bytes in buffer ==>"+bytesRead);
if (bytesRead > 0) {
if (isRecentVersion ) {
try {
arr = trim(buf.array());
decrypted = decrypt(arr, knum);
} catch (Exception e) {
decrypted = null;
}
}
仅当我在遇到问题时使用密码调用解密方法时
public static String decrypt(byte[] decodedByte, byte[] knum) {
try {
byte[] decodedKey = Base64.getDecoder().decode(knum);
SecretKeySpec key = new SecretKeySpec(Arrays.copyOf(decodedKey, 16), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decrypted = cipher.doFinal(decodedByte);
String decString = new String(decrypted, "UTF-8");
return decString;
} catch (Exception e) {
}
return null;
}
这是我遇到的错误
following error occurs--->
java.lang.IllegalArgumentException: Illegal base64 character 1b
at java.util.Base64$Decoder.decode0(Base64.java:714) ~[na:1.8.0_201]
at java.util.Base64$Decoder.decode(Base64.java:526) ~[na:1.8.0_201]
at at.smartfox.my.smartfoxdeviceserver.server.nio.MachineListener.decrypt(MachineListener.java:271) [smartfox-device-server-2.0.6.jar:na]
at at.smartfox.my.smartfoxdeviceserver.server.nio.MachineListener.readMessage(MachineListener.java:170) [smartfox-device-server-2.0.6.jar:na]
at at.smartfox.my.smartfoxdeviceserver.server.nio.MachineListener.writeMessage(MachineListener.java:91) [smartfox-device-server-2.0.6.jar:na]
at at.smartfox.my.smartfoxdeviceserver.server.ServerController.executeCommand(ServerController.java:219) [smartfox-device-server-2.0.6.jar:na]
at at.smartfox.my.smartfoxdeviceserver.server.ServerController$1.load(ServerController.java:54) [smartfox-device-server-2.0.6.jar:na]
at at.smartfox.my.smartfoxdeviceserver.server.ServerController$1.load(ServerController.java:52) [smartfox-device-server-2.0.6.jar:na]
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3542) [smartfox-device-server-2.0.6.jar:na]
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2323) [smartfox-device-server-2.0.6.jar:na]
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2286) [smartfox-device-server-2.0.6.jar:na]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) [smartfox-device-server-2.0.6.jar:na]
at com.google.common.cache.LocalCache.get(LocalCache.java:3953) [smartfox-device-server-2.0.6.jar:na]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3957) [smartfox-device-server-2.0.6.jar:na]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4875) [smartfox-device-server-2.0.6.jar:na]
at at.smartfox.my.smartfoxdeviceserver.http.server.handler.CommonServiceHandler.handle(CommonServiceHandler.java:169) [smartfox-device-server-2.0.6.jar:na]
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79) [na:1.8.0_201]
at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83) [na:1.8.0_201]
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:82) [na:1.8.0_201]
at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:675) [na:1.8.0_201]
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79) [na:1.8.0_201]
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:647) [na:1.8.0_201]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_201]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_201]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_201]