一种基于模m同余类环的账号生成方法与流程

文档序号:11138685阅读:来源:国知局

技术特征:

1.一种基于模m同余类环的账号生成方法,其特征在于,该方法包括以下步骤:

1)根据当前用户群账号系统总容量T,设定账号数量基数a,其中T为正整数,a为正整数且0<=a<T;并计算出当前用户群账号系统实际容量m=T-a;

2)用户向系统提交注册请求,系统基于ID自增长技术生成用户注册序号n;

3)选取一个不能整除m的正整数p,p≥2,且p与m只有一个公约数1;

4)求取所述p与用户注册序号n的乘积p*n,并根据下式生成用户账号userID:

userID=(p*n)mod m+a

其中,n为基于ID自增长技术生成的用户注册序号,即表示是第n个注册用户;mod为取模运算。

2.根据权利要求1所述的基于模m同余类环的账号生成方法,其特征在于,所述用户注册序号n超过用户群账号系统实际容量累计值时,即时,则所述步骤1)中,对当前用户群账号系统总容量T进行扩容更新,并对账号数量基数a进行更新为满足Tj-1<=aj<Tj的正整数,然后用更新后的系统总容量Tj和账号数量基数aj,根据mj=Tj-aj重新计算新的当前用户群账号系统实际容量mj,其中j为更新次数序号,mi表示m0、m1、……、mj-1中的任一个,aj为第j次更新后的账号数量基数,Tj为第j次扩容更新后的用户群账号系统总容量,Tj-1为第j次扩容更新前的用户群账号系统总容量,mj为第j次扩容更新后的用户群账号系统实际容量;

所述步骤4)中求取pj与用户注册序号n的乘积pj*n,并根据下式生成用户账号userID:

<mrow> <mi>u</mi> <mi>s</mi> <mi>e</mi> <mi>r</mi> <mi>I</mi> <mi>D</mi> <mo>=</mo> <mo>{</mo> <msub> <mi>p</mi> <mi>j</mi> </msub> <mo>*</mo> <mrow> <mo>(</mo> <mi>n</mi> <mo>-</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <msub> <mi>m</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>}</mo> <mi>mod</mi> <mi> </mi> <msub> <mi>m</mi> <mi>j</mi> </msub> <mo>+</mo> <msub> <mi>a</mi> <mi>j</mi> </msub> </mrow>

其中,pj为第j次扩容更新后选取的一个不能整除mj的正整数,mi表示m0、m1、……、mj-1中的任一个,m0为首次扩容更新之前的初始用户群账号系统实际容量。

3.根据权利要求1或2所述的基于模m同余类环的账号生成方法,其特征在于,所述步骤2)中基于ID自增长技术生成用户注册序号n的具体方法为:将用户注册的自然排序作为用户注册序号n。

4.根据权利要求1或2所述的基于模m同余类环的账号生成方法,其特征在于,所述步骤2)中基于ID自增长技术生成用户注册序号n的具体方法为:

将备选序号分为S个容量相同的子库,即D1={1,S+1,2S+1……},D2={2,S+2,2S+2……},……,DS={S,2S,3S……},当用户向系统提交注册请求,将各用户按顺序分配到不同的子库中,并从该子库中按由小到大的顺序抽取还未使用过的备选序号作为该用户的用户注册序号n。

5.根据权利要求1或2所述的基于模m同余类环的账号生成方法,其特征在于,所述步骤4)中,a=0,即m=T,并根据下式生成用户账号userID:userID=(p*n)mod m。

6.根据权利要求1或2所述的基于模m同余类环的账号生成方法,其特征在于,所述p为素数。

7.一种基于用户账号userID反推用户注册顺序的方法,其特征在于,该方法针对权利要求1-5中任一项所述的基于模m同余类环的账号生成方法得到的用户账号userID,反推出用户注册顺序,具体为根据下式确定用户注册序号n:

n={q*(userID-a)}mod m

计算得到的n如果不为0,则n为用户注册序号;计算得到的n如果为0,则用户是第m个注册者;

其中q为正整数且满足(p*q)mod m=1,即q=(i*m+1)/p,其中i为正整数。

8.根据权利要求7所述的基于用户账号userID反推用户注册顺序的方法,其特征在于,该方法针对权利要求2所述的基于模m同余类环的账号生成方法得到的用户账号userID,首先根据所述用户账号userID所处的账号区段,确定该用户账号userID生成时所对应的账号数量基数aj、用户群账号系统实际容量mj和正整数pj,然后根据下式确定用户注册序号n:

<mrow> <mi>n</mi> <mo>=</mo> <mo>{</mo> <msub> <mi>q</mi> <mi>j</mi> </msub> <mo>*</mo> <mrow> <mo>(</mo> <mi>u</mi> <mi>s</mi> <mi>e</mi> <mi>r</mi> <mi>I</mi> <mi>D</mi> <mo>-</mo> <msub> <mi>a</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mo>}</mo> <mi>mod</mi> <mi> </mi> <msub> <mi>m</mi> <mi>j</mi> </msub> <mo>+</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <msub> <mi>m</mi> <mi>i</mi> </msub> </mrow>

计算得到的n如果不为则表示n为用户注册序号;计算得到的n如果为则用户是第个注册者;其中qj为第j次扩容更新后选取的满足(pj*qj)mod mj=1的正整数,即qj=(i*mj+1)/pj,其中i为正整数。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1