24

私のアプリは、セッション ID として使用する 16 進文字列を生成する必要があります。Java がSecureRandom機能していないようです (「java/lang/NoClassDefFoundError: java/security/SecureRandom: システム パッケージにクラスを作成できません」)。

私はこのようなことを考えました:

byte[]  resBuf = new byte[50];
new Random().nextBytes(resBuf);
String  resStr = new String(Hex.encode(resBuf));

しかし、その方法nextBytes(byte[] bytes)は奇妙な理由で利用できません。

Java ME/J2ME でランダムな 16 進数を生成する手段を持っている人はいますか?

どうもありがとう。

編集:上記のジェネレーターは、Bouncy Castle lcrypto-j2me-145 (lcrypto-j2me-147 ではなく) を使用すると機能するようです。

4

1 に答える 1

54

JavaMEはJavaSEのサブセットであるため、デスクトップバージョンの多くのクラスとメソッドは使用できません。

指定された長さのランダムな文字列を取得しようとしているようです。あなたはこのようなことをすることができます:

    private String getRandomHexString(int numchars){
        Random r = new Random();
        StringBuffer sb = new StringBuffer();
        while(sb.length() < numchars){
            sb.append(Integer.toHexString(r.nextInt()));
        }

        return sb.toString().substring(0, numchars);
    }
于 2013-01-31T10:12:58.027 に答える