2016-02-12 106 views
0

在纸An Efficient Certificateless Encryption for Secure Data Sharing in Public Clouds,2.3节表示:“q | p - 1”中的垂直条是什么意思?

KGC作为输入安全参数ķ以产生两个素数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或其他东西?或者更好的方法是什么?

谢谢!

+1

'|'运算符是[按位或](https://en.wikipedia.org/wiki/Bitwise_operation#OR),我不确定其余部分。 – Draco18s

+1

[数学](https://en.wikipedia.org/wiki/Vertical_bar#Mathematics),* a * | * b *表示* a * divides * b *(即* a *是因子* b *或* b *是* a *的整数倍)。 –

+0

@MichaelLiu我很确定数学在单行表达式中使用了'/'(当不使用'÷'时) – Draco18s

回答

4

在此上下文中,vertical bar “|”是一个数学符号表示整除(不与除法运算符“/”混淆)。表达式a | b(其被朗读为 “一个划分b” 或 “一个b的因子”)指的是一个b一个除数。因此,q | p - 1意味着q必须均匀地分割p - 1同样地,pq必须满足条件(p - 1)/ q = ķ对于某个整数k

+2

或用C#术语'(p-1)%q == 0' –

+0

@ScottChamberlain:是的,没错。 –

+0

是(p-1)%q == 0还是q%(p-1)?我想我在这里很困惑。 – Hitsugaya