打印

RSA算法的C语言实现的困惑

[复制链接]
1278|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
e08610318|  楼主 | 2014-9-25 10:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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语言实现大数运算感觉挺那个啥,没弄过啊!

相关帖子

沙发
hgjinwei| | 2014-9-28 23:38 | 只看该作者
1024位算基本安全,现在都推荐用2048位了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:你可能不知道今天所做的事情会对未来有多大的干预能力!

67

主题

310

帖子

12

粉丝