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) {
        } 

例外 :

TRACE:、Displayクラスで例外がキャッチされましたjava.lang.Error:ClassFormatError:56 at SSMS.EncShow()、bci = 173 at SSMS.commandAction()、bci = 16 at javax.microedition.lcdui.Display $ ChameleonTunnel.callScreenListener( )、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()、com.sun.midp.chameleon.CWindow.keyInput()でbci = 48、javax.microedition.lcdui.Display $ DisplayEventConsumerImpl.handleKeyEvent()でbci = 38、bci = 32 at com.sun.midp.lcdui.DisplayEventListener.process()、bci = 294 at com.sun.midp.events.EventQueue.run()、bci = 177 at 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仮想マシンがクラスファイルを読み取ろうとして、ファイルの形式が正しくないと判断された場合にスローされます。それ以外の場合は、クラスファイルとして解釈できません。」

org.apache.commonsのバージョンは、Java1.3に基づくJavaMEには新しすぎる可能性があります。必ず古いバージョンのorg.apache.commonsを使用してください。

于 2012-06-29T16:30:52.797 に答える