解出满足m^n=k (mod p)的所有m,k,n,p已知.(p是质数与不是质数时分别怎样做?)能给出清楚点的思苦和过程么?要应用那些知识定理~

问题描述:

解出满足m^n=k (mod p)的所有m,k,n,p已知.(p是质数与不是质数时分别怎样做?)能给出清楚点的思苦和过程么?要应用那些知识定理~

当p是质数时,
已知m、k、p求n是一个离散对数问题,当p较大时,目前为止还没有有效算法,很多公钥密码 系统就是根据这个原理设计的
当p较小时,可以通过制表,逐步排除,算出n
当p不是质数时,
可以将上述同余式分解成一组模p的素因子的同余式方程组,然后分别求解,再根据孙子定理使用各方程的解计算出原方程的解还是有些不明白,当时别人讲解的时候涉及到了好多什么原根,指标之类的东西……给定一个大素数p,及相应的有限域Zp,若已知Zp的原根为g,给定一个数b,求x使其满足g^x=b mod p。上述问题就是离散对数问题,目前还没有有效地算法解决这个问题。若p不是很大,则有一些方法可以加速计算,如大步小步法、蒙特卡洛方法、指数方法等,这些方法也只是能加速计算,当p很大时也无能为力。可参考《代数学基础与有限域》、《算法数论》等书。