gpt4 book ai didi

java - aproximately 给定大小的安全随机数

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:51:59 27 4
gpt4 key购买 nike

我正在做一个加密消息的 secret 共享算法。为此,我需要一个大于消息的素数和一些与消息大小大致相同的随机数。

我可以用 BigInteger.probablePrime(MsgSize+8) 做第一个,但我不知道后面该怎么做。

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

一些想法?

最佳答案

Shamir's Secret Sharing吗你正在实现?如果是这样,请注意您实际上不需要比整个消息更大的质数 — 将消息分成一些可管理大小的 block 并使用固定质数分别共享每个 block 是完全可以的。

此外,Shamir 的 secret 共享不需要素数大小的字段;可以使用任何 finite field GF(pn),尤其包括二进制字段 GF(2n)。这样的字段对于计算机实现特别方便,因为 secret block 和共享 block 都将是简单的 n 位位串。

唯一的麻烦是,在非主要领域,您必须实现 finite field arithmetic (或找到一个现有的实现)并且您需要选择一个特定的减少多项式并就此达成一致。然而,前者并不像看起来那么复杂,而后者实际上并不比选择和同意一个素数难多少。 (特别是,GF(2n) 的约简多项式可以自然地表示为 n 位位串,丢弃始终为 1 的高位。)

关于java - aproximately 给定大小的安全随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11145034/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com