模运算性质及应用

2019-04-13 12:25发布

  • (a%n)%n=(a%n)
一个数(无论正负),对 m 取余,是将其映射到 [0,m1] 的区间

模幂运算 ⇒ 模乘运算

RSA 算法的核心是大整数的模幂运算(Modular Power),模幂运算又称为模乘方运算。用数学表达式表示模幂运算就是:
C=AB%n 无论是乘方还是除法求余数的计算量都非常大,除此之外,乘方计算的中间结果 AB 将是一个非常大的数,大数必须支持非常多的位才能保存这个中间结果。 由RSA算法的性质可知,模幂运算的性能直接决定了RSA算法的性能。为了解决模幂运算的效率问题,现代数学界提出了很多解决方案。这些方案的基本思想都是先将模幂运算转换成模乘运算,然后再用高效的算法处理模乘运算。 2 个两位数相乘(a2)结果最大接近一个 4 位数,10 个两位数相乘(a10)结果最大接近于一个 10*2 = 20 位的数。
同理一个 1024 bits(1024个二进制位)的大整数的乘方,其二次方的结果最大可能需要 1024×2=2048 个二进制位,其 1024 次方的结果最大可能需要 1024×1024=220=217Byte=128Kb 的存储空间。 模幂运算的解决思路是将其转化为模乘运算,避免直接求幂带来的存储和效率的问题。模乘的数学表达式为:
C=A×B(modn) 将模幂运算转化为模乘运算,需要利用模运算的两个特性:
(a×b)%n=(a%n×b%n)%n(a+b)%n=(a%n+b%n)%na9%n 为例,利用平方乘降幂法,将其分解为 (a8%n×a%n)%n,而 a8%n 又可分解为 (a4%n×a4%n)%na4%n 又可继续分解为 (a2%n×a2%n)%na2%n 最终分解为 (a%n×a%n)%n