Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中生成n个随机位_Java_Security_Bit - Fatal编程技术网

在Java中生成n个随机位

在Java中生成n个随机位,java,security,bit,Java,Security,Bit,在研究加密时,我一直在玩弄java的安全模块。 我有一个关于生成随机数量的n位的问题 说我想生成。。1000位。 我使用以下代码: BigInteger num = new BigInteger(1000, new SecureRandom()) 当我打印它时,我会得到一个很大的十进制值,但是当我去计算位时,我的问题就来了。我将“num”中的十进制值插入到十进制到二进制转换器中。当我计算字符的数量(1和0位)时,数量并不总是1000。有时是997996等等。我的问题是,为什么会发生这种情况,我

在研究加密时,我一直在玩弄java的安全模块。 我有一个关于生成随机数量的n位的问题

说我想生成。。1000位。 我使用以下代码:

BigInteger num = new BigInteger(1000, new SecureRandom())
当我打印它时,我会得到一个很大的十进制值,但是当我去计算位时,我的问题就来了。我将“num”中的十进制值插入到十进制到二进制转换器中。当我计算字符的数量(1和0位)时,数量并不总是1000。有时是997996等等。我的问题是,为什么会发生这种情况,我如何解决这个问题?十进制值仍然是1000位吗


任何帮助都将不胜感激

如果希望1000位字符串的高位设置为1,可以执行以下操作:

String b = null;
try {
    b = "1" + SecureRandom.getInstanceStrong().ints(999, 0, 2)
            .mapToObj(Integer::toString)
            .collect(Collectors.joining());
} catch (NoSuchAlgorithmException ne) {
    ne.printStackTrace();
}
System.out.println(b.length());
System.out.println(b.substring(0,10)
打印出类似于

1000
1110110001

我怀疑第一位可能是0。
10
是一个随机的4位基数2数字。哦,你不同意吗?
0010
更好吗?是同一个号码对于十进制数,
99
是一个2位数字,还是一个没有前导零的3位数字?好的,我明白了,前导0出现的问题也是如此?顺便说一下,1000是一个例子,它发生在一些其他值上,例如1021