我的应用程序需要生成一个十六进制字符串以用作会话 ID。 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中生成随机十六进制数?
非常感谢。
编辑:上面的生成器在使用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);
}