【问题标题】:What does the vertical bar in "q|p − 1" mean?"q|p − 1" 中的竖线是什么意思?
【发布时间】:2025-12-09 16:10:01
【问题描述】:

在论文An Efficient Certificateless Encryption for Secure Data Sharing in Public Clouds 中,第 2.3 节说:

KGC 将安全参数 k 作为输入,以生成两个素数 pq,使得 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, ab 表示 a 除以 b(即ab 的因数,或 ba 的整数倍)。
  • @MichaelLiu 我很确定数学在单行表达式中使用了/(不使用÷时)
  • 我不确定这是公式想要的。请提供指向您尝试遵循的规范的链接,我认为规范和您的问题之间有些东西丢失了。
  • @Draco18s:他们是不同的。 a / b 是一个 运算,表示 a 除以 b一个 | b 陈述了一个事实,即a 可分为b

标签: c# math cryptography


【解决方案1】:

在此上下文中,vertical bar “|” 是一个数学符号,表示 可除性(不要与 除法运算符“/”混淆)。表达式a | b(朗读为“ab”或“a的一个因子b") 表示 ab 的除数。因此,q | p - 1 表示 q 必须整除 p - 1。等效地,pq 必须满足条件 (p − 1)/q = k 对于某个整数 k

【讨论】:

  • 或 C# 术语中的 (p-1) % q == 0
  • 是 (p-1) % q == 0 还是 q %(p-1)?我想我在这里很困惑。
  • @Hitsugaya:这是第一个。
  • 好的...干杯!我可以知道我应该如何编辑代码吗?是否可以喜欢生成 p,生成 q,如果 p=q,重新生成它,然后如果 (p-1) % q /= 0 ,重新生成 q 或其他什么?或者最好的方法是什么?
  • 您必须咨询数论或密码学专家。但我怀疑重复生成两个随机素数直到满足该条件将花费很长时间。