我需要通过硬数学运算来反转函数,我在这里要求检查它是否可能,最终得到帮助.
public static UInt32 Func_4(UInt32 P, UInt32 X, UInt32 G)
{
UInt64 result = 1;
UInt64 mult = G;
if (X == 0)
return 1;
while (X != 0)
{
if ((X & 1) != 0)
result = (mult * result) % P;
X = X >> 1;
mult = (mult * mult) % P;
}
return (UInt32)result;
}
Run Code Online (Sandbox Code Playgroud)
通过"逆转"我的意思是:我知道G,我知道P,我知道结果.我需要X.
今天早上我试着翻译它,而我的头脑很清楚,但我失败了.它甚至可能吗?
先感谢您.
小智 5
好,
手工完成这项工作:
P = 5,X = 0b0000 1110,G = 7
P = 5,X = 0b0001 1110,G = 7
P = 5,X = 0b0011 1110,G = 7
P = 5,X = 0b0111 1110,G = 7
等等,我想你看到的模式
对于结果(4)都具有相同的返回值...
因此,任何试图将其反转以获得X值的尝试都会有多个可能的X值.
根据你真正需要的东西,这可能并不重要......
什么是这件事的背景?