【发布时间】:2025-12-09 16:10:01
【问题描述】:
在论文An Efficient Certificateless Encryption for Secure Data Sharing in Public Clouds 中,第 2.3 节说:
KGC 将安全参数 k 作为输入,以生成两个素数 p 和 q,使得 q| p - 1.
q|p - 1 是什么意思?是 q = 1 - p 吗?我想要求澄清一下,因为我编写的代码只生成两个随机大素数:
Random rand = new Random();
BigInteger p = BigInteger.genPseudoPrime(128, 10, rand);
Random rand2 = new Random();
BigInteger q = BigInteger.genPseudoPrime(128, 10, rand2);
do{ q = BigInteger.genPseudoPrime(128, 10, rand2); }
while (p == q);
这可以接受吗?如果没有,我应该怎么写代码?
已编辑:
我可以知道我应该如何编写代码吗?是否可以喜欢生成 p,生成 q,如果 p=q,重新生成它,然后如果 (p-1) % q /= 0 ,重新生成 q 或其他什么?或者有什么更好的方法?
谢谢!
【问题讨论】:
-
|运算符是 bitwise OR,其余的我不确定。 -
In mathematics, a ∣ b 表示 a 除以 b(即a 是 b 的因数,或 b 是 a 的整数倍)。
-
@MichaelLiu 我很确定数学在单行表达式中使用了
/(不使用÷时) -
我不确定这是公式想要的。请提供指向您尝试遵循的规范的链接,我认为规范和您的问题之间有些东西丢失了。
-
@Draco18s:他们是不同的。 a / b 是一个 运算,表示 a 除以 b。 一个 | b 陈述了一个事实,即a 可分为b。
标签: c# math cryptography