本帖最后由 e08610318 于 2014-9-25 10:53 编辑
小弟最近在做车载终端的《部标》协议,目前在实现RSA的加密解密算法。
以前都没有接触过RSA算法,也是头一回接触,大概了解原理后,开始实践。不过,有个疑问在我看过《标准》协议后出现,协议规定,终端盒平台在交换双方的公钥时,质数E占4个字节,而N占128个字节,按照我原来所了解的原理。
因为E的范围是1 < e < φ(n),且e和φ(n)要互质,同时 φ(n) = (p-1)(q-1),
由e的范围是4个字节,因此我推断质数p q的范围是2个字节,那么φ(n)的范围也肯定是4个字节,此外,n=p*q,那么n的范围也是4个字节。
但是,为什么协议里面,N要用128个字节来表示?
我后来想了想,因为e的值一般不会取很大,大概是65537左右,而N的大小决定了因式分解的难度,因此N需要越大越好,一般来讲,1024位基本安全,因此用128个字节来表示,我想e和n没有必然的关系!那么这样的话,p和q则应该是64个字节的了(512位),这个这个也太大了吧!C语言实现大数运算感觉挺那个啥,没弄过啊! |