如何找到MOD表达式中的变量值?
9 = 2^X mod 11
X 是什么以及如何找到 X?
它与在 RSA 算法中查找纯文本有关,我正在为其编写一个 C 程序。
9 = 2^X mod 11
What is X and how do you find X?
Its related to finding the plain text in RSA algorithm and I'm writing a C program for it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
对于任意整数 i,答案是 6 + 10i。
获得小模数解的一个简单方法是迭代 x 的所有值。您只需检查 0 到 10 (= 11 - 1) 之间即可找到第一个解(如果存在解)。
输出:
显然,如果模量很大,这将需要很长时间。
更多信息请参见离散对数页面。笔记:
如果模幂求逆很容易,那么它就不是一个好的密码原语。
The answer is 6 + 10i for any integer i.
A simple way to get solutions for small moduli is to iterate over all values of x. You only need to check between 0 and 10 (= 11 - 1) to find the first solution, if any solution exists.
Output:
Obviously this will take a long time if the modulus is large.
More information is on the Discrete Logarithm page. Note:
If it were easy to invert modular exponetiation, it wouldn't be a good cryptographic primitive.
显然,2^n mod 11 的序列将是循环的。
2^0 模 11 = 1
2^1 模 11 = 2
2^2 模 11 = 4
2^3 模 11 = 8
2^4 模 11 = 5
2^5 模 11 = 10
2^6 mod 11 = 9
2^7 模 11 = 7
2^8 模 11 = 3
2^9 模 11 = 6
2^10 模 11 = 1
2^11 mod 11 = 2
因此,循环长度为 10。
2^n mod 11 = 9 对于 n=6+10*m,其中 m 是整数
Obviously, sequence of 2^n mod 11 will be cyclical.
2^0 mod 11 = 1
2^1 mod 11 = 2
2^2 mod 11 = 4
2^3 mod 11 = 8
2^4 mod 11 = 5
2^5 mod 11 = 10
2^6 mod 11 = 9
2^7 mod 11 = 7
2^8 mod 11 = 3
2^9 mod 11 = 6
2^10 mod 11 = 1
2^11 mod 11 = 2
So, cycle length is 10.
2^n mod 11 = 9 for n=6+10*m where m is integer
我认为可以使用模块化算术来解决。另一种方法是在 F11 (Z/11Z) 中计算 9=2^X,但这也是模算术的一部分。
另一种解决方案(您只能找到一个解决方案)是以数值方式求解方程,这在 C 程序中可能更容易。
I think that can be solved using modular arithmetic. Another way is calculating 9=2^X in F11 (Z/11Z), but that's part of modular arithmetic, too.
Another solution (where you'll find only ONE solution) is to solve the equation numerically, that's probably easier in a C program.