私のアプリは、セッションIDとして使用する16進文字列を生成する必要があります。 JavaのSecureRandom
が機能していないようです( "Java/lang/NoClassDefFoundError:Java/security/SecureRandom:Cannot create class in system package")
私はこのようなことをすることを考えました:
_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ではない)を使用すると、上記のジェネレーターが機能するようです。
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);
}