3

我正在 J2ME 中开发一些发送和接收加密消息的应用程序,我发现下面的代码对其进行加密并转换为字符串,但它不起作用并抛出异常,我应该怎么做?当我想解密时,我应该如何将 String 转换为 byte[] ?谢谢

 byte[] plainArray = message.getBytes();
        try {
            byte[] keyBytes = "SECRET_1SECRET_2SECRET_3".getBytes();

            // key = new KeyParameter(keyBytes);
            AESEngine engine = new AESEngine();
            PaddedBufferedBlockCipher cipher = new PaddedBufferedBlockCipher(engine);
            cipher.init(true, new KeyParameter(keyBytes));
            byte[] cipherBytes = new byte[cipher.getOutputSize(plainArray.length)];
            int cipherLength = cipher.processBytes(plainArray, 0, plainArray.length, cipherBytes, 0);
            cipher.doFinal(cipherBytes, cipherLength);

            String result2 = org.apache.commons.codec.binary.Base64.encodeBase64String(cipherBytes);
            formSender.append(result2);

        } catch (Exception e) {
        } 

例外 :

跟踪:,在显示类 java.lang.Error 中捕获的异常:ClassFormatError:SSMS.EncShow() 中的 56,SSMS.commandAction() 中的 bci=173,javax.microedition.lcdui.Display$ChameleonTunnel.callScreenListener 中的 bci=16( ),在 com.sun.midp.chameleon.layers.SoftButtonLayer.processCommand() 处 bci=44,在 com.sun.midp.chameleon.layers.SoftButtonLayer.soft1() 处 bci=80,在 com.sun 处 bci=31。 midp.chameleon.layers.SoftButtonLayer.keyInput(), bci=48 at com.sun.midp.chameleon.CWindow.keyInput(), bci=38 at javax.microedition.lcdui.Display$DisplayEventConsumerImpl.handleKeyEvent(), bci= 32 在 com.sun.midp.lcdui.DisplayEventListener.process(),bci=294 在 com.sun.midp.events.EventQueue.run(),bci=177 在 java.lang.Thread.run(Thread.java: 722)

4

1 回答 1

5

根据http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/ClassFormatError.html “当 Java 虚拟机尝试读取类文件并确定该文件格式错误或否则不能解释为类文件”。

对于基于 Java 1.3 的 Java ME,您的 org.apache.commons 版本可能太新了。请务必使用旧版本的 org.apache.commons。

于 2012-06-29T16:30:52.797 回答