反转数学函数

Iva*_*nov 1 c# c++ math

我需要通过硬数学运算来反转函数,我在这里要求检查它是否可能,最终得到帮助.

    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.

今天早上我试着翻译它,而我的头脑很清楚,但我失败了.它甚至可能吗?

先感谢您.

Gre*_*ill 21

它看起来像你的Func_4()函数计算g ^ X模p.您要求的是离散对数问题的解决方案,但没有有效的算法.

  • 但是,如果海​​报确实解决了这个问题,我就有了这个RSA系统,我试图打破...... (14认同)
  • "mod"就是问题所在.你永远不会打破这个.5 mod 2与7 mod 2和9 mod 4具有相同的结果,依此类推.您无法根据输出确定输入.输入组合无穷大,可产生所需的输出.去睡觉. (6认同)

小智 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值.

根据你真正需要的东西,这可能并不重要......

什么是这件事的背景?