简短的回答是:这是不能做到的。
请阅读:
http://en.wikipedia.org/wiki/Modular_exponentiation
令B = FLG
令E = $ 0C8CFFF0 = 210567152
设M = $ 2E8CFFB0 = 780992432
,则此函数计算(b^e)mod m
为了反转它,我们需要找到e mod m的乘法逆。
我试过使用WolframAlpha。
http://www.wolframalpha.com/input/?i=multiplicative+inverse+of+210567152+mod+780992432
它给出的结果是:
(210567152不可逆模780992432)
其原因是,e和m不互质。他们都可以被两个整除。
由此我们可以得出结论:由于存在切割,因此无法扭转此功能。 作为一个例子:
dtwin(60)= dtwin(2326)= 62188800
什么应当与参数62188800称为反向函数返回? 它应该返回60还是2326?
这里有冲突的一些例子:
dtwin(658) = dtwin(1300) = 682595280
dtwin(60) = dtwin(2326) = 62188800
dtwin(1316) = dtwin(2600) = 76519712
dtwin(2312) = dtwin(3522) = 317601904
dtwin(1974) = dtwin(3900) = 52357088
dtwin(120) = dtwin(4652) = 144155936
dtwin(2632) = dtwin(5200) = 679101872
dtwin(3290) = dtwin(6500) = 322955216
dtwin(3989) = dtwin(6725) = 301338273
dtwin(180) = dtwin(6978) = 628048624
dtwin(4624) = dtwin(7044) = 435300992
dtwin(5080) = dtwin(7658) = 2152880
dtwin(3948) = dtwin(7800) = 682904608
dtwin(2685) = dtwin(8183) = 461799889
dtwin(2461) = dtwin(8951) = 170465
dtwin(4606) = dtwin(9100) = 138445536
dtwin(240) = dtwin(9304) = 231258592
dtwin(4741) = dtwin(9603) = 586985553
dtwin(6117) = dtwin(9923) = 277591073
要产生结果,可能为加密是有用的,可以生成号码如下。 我不会在这里详细介绍它是如何工作的。如果您需要了解更多信息,可以使用Google公钥密码术。
Select P and Q that are prime.
Compute N = P * Q
Compute T = (P-1) * (Q-1) This is called the totient.
Select E that is coprime to N and T.
Select D that is the multiplicative inverse of E mod T.
你的模N.这两个指数是E和D.
To encrypt A, calculate B = (A^E) mod N
To decrypt B, calculate A = (B^D) mod N
注意,在现实世界中的加密,这些值通常具有数字数百或数千。
这里有一些结果是在你的例子量级:
N = 590108483 =$232C5743
E = 547145911 =$209CC8B7
D = 507147559 =$1E3A7527
N = 763464677 =$2D818BE5
E = 545809367 =$208863D7
D = 622691303 =$251D83E7
N = 948703211 =$388C0FEB
E = 885205759 =$34C32AFF
D = 893844127 =$3546FA9F
N = 897918037 =$35852455
E = 894567871 =$355205BF
D = 539129719 =$20227777
N = 754905647 =$2CFEF22F
E = 540902531 =$203D8483
D = 534729131 =$1FDF51AB
也许解码被认为是困难的。 –
至少你可以格式化你要求我们检查的代码。 –