1

msgの長さが追加されたSignedmsgがあります:

契約書に記載されているすべての条件に同意します。3AACBCB0C8FA6A23C72ACBECDE626AC7CD09C9B514CB47E8263150608E915EC2F64F7A13AA7BFEFC49FF2FDE74C0E1F34B33AA964BD03858D67966199A19D4DA5A57566812694AC1B79835EC8A1893DD5CEA709F5B59CB966C6D068837406AB16C762494BD4C9BC0A66E23B5219932FB2DFC82A62D392C0F3C23C793855AAF6C0078

ここで78はメッセージのみの長さです。メッセージの長さを利用して、署名されたメッセージからメッセージを抽出する必要があります。私はjava(netbeans)で次のコードを使用しました:

int MsgLen = Integer.parseInt(Msg.substring(Msg.length() - 4));
System.out.println("Message length: "+MsgLen);

しかし、私はこのようなエラーが発生しています:

スレッド"AWT-EventQueue-0"の例外java.lang.NumberFormatException:入力文字列の場合: "78"

誰かが私が問題を解決するのを手伝ってくれるなら、できるだけ早くあなたの答えを投稿してください.....

4

1 に答える 1

0

修正してよかったです。

編集:先行ゼロを削除する必要があることについて間違っていました。Integer.parseIntがこれを処理します。元のコードは、実際にはサンプルメッセージで機能します。自己完結型の例:

public class IntegerParseTest {
    public static void main(String[] args) {
        String Msg = "3AACBCB0C8FA6A23C72ACBECDE626AC7CD09C9B514CB47E8263150608E915EC2F64F7A13AA7BFEFC49FF2FDE74C0E1F34B33AA964BD03858D67966199A19D4DA5A57566812694AC1B79835EC8A1893DD5CEA709F5B59CB966C6D068837406AB16C762494BD4C9BC0A66E23B5219932FB2DFC82A62D392C0F3C23C793855AAF6C0078";
        Integer MsgLen = Integer.parseInt(Msg.substring(Msg.length() - 4));
        System.out.println("Message length: "+MsgLen);
    }
}

結果:

Message length: 78

あなたのメッセージには、質問では明らかではなかった末尾の空白があると思います。とにかく、あなたがそれを修正してくれてうれしいです。

于 2012-07-18T20:01:23.650 に答える