首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >近似给定大小的安全随机数

问近似给定大小的安全随机数
EN

Stack Overflow用户
提问于 2012-06-22 03:05:34
回答 2查看 814关注 0票数 3

我正在做一个秘密共享算法,它加密一个消息。要做到这一点,我需要一个比消息大的素数和一些与消息大小大致相同的随机数。

我可以用BigInteger.probablePrime(MsgSize+8)做第一件事,但我不知道如何做后一件事。

我使用的是随机数和后来的SecureRandom,但它们不会生成给定长度的数字。我的解决方案是对BigInteger执行randomInt ^ randomInt,但这显然是一个糟糕的解决方案。

一些想法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-22 03:11:23

您是否尝试过使用较小的probablePrime方法,然后使用较大的随机整数作为该数字的偏移量?这可能会起作用,这只是一个想法。

票数 2
EN

Stack Overflow用户

发布于 2012-07-16 05:21:27

我也有同样的问题(这就是我找到这篇文章的原因)。现在有点晚了,但也许其他人发现这个方法很有用:

代码语言:javascript
复制
public static BigDecimal getBigRandom(int d)
{
    BigDecimal rnd = new BigDecimal(Math.random());

    BigDecimal rndtmp;

    for(int i=0;i<=d;i++)
    {
        rndtmp = new BigDecimal(Math.random());
        rndtmp = rndtmp.movePointLeft(rnd.precision());
        rnd = rnd.add(rndtmp);
    }    

    return rnd;
}

用法: BigDecimal x= getBigRandom(y);

每个y都会给你大约50个数字。

如果需要的位数超过(2^31-1)*50位,只需将int改为long ;-)

不知道它是不是很好,但对我来说很有效

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11145034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档