近日在开发智能卡的加密算法中遇到一个问题,恳请赐教.
在RSA算法中,已知p,q,e 和密文 C, 如果要用中国剩余定理解密的话是这样的:
先求出d(d*e mod ((p-1)*(q-1))=1)
dp(d mod(p-1)),
dq(d mod(q-1)),
mp(c^dp mod p),
mp(c^dq mod q),
ip(ip*p mod q =1),
iq(iq*p mod p =1),
N(p*q),
然后求明文 m = (q*iq*mp + p*ip*mq) mod N
我按照这样的算法,与直接算明文的算法
m' = C^d mod N 比较了一下,得出的结果相等,即
m = m'
这说明我上面的中国剩余定理的理解和算法步骤还是正确的.
但是有一个问题我的算法再怎么改进,速度都没有直接算的快,按照书上的说法,不考虑剩余定理的计算过程,即只考虑这一步:
m = (q*iq*mp + p*ip*mq) mod N 的话,
如果是1024bits的密钥,速度应该是直接算的3.32倍.即是:
m' = C^d mod N 的3.32倍
可是我得出的结果却是前者的速度反而没有后者的快,怎么改进都是后者的两倍左右.所以我想请问一下,上面的算法是不是存在什么问题,或者还有更好的办法只是我没有理解???(对于程序语言上优化几乎已经到及至了,所以希望高手从算法上替我考虑一下,而不是优化代码,谢谢!)