首页
社区
课程
招聘
关于RSA明码M的最大分割长度问题?
发表于: 2005-2-17 17:01 5245

关于RSA明码M的最大分割长度问题?

2005-2-17 17:01
5245
初次接触RSA,有些不明白地方,希望大家帮个忙!

资料上说:
Max length(M )=length(N ) - 1;
但RSA-Tool上说:
Max length(M )=(keysize/8) - 1;


问题1:
一般情况按第一种说法分割M,不会有错的,为什么RSA-Tool上要这么分呢?困惑中……

问题2:
在解密时,C长度如何分割?按N的长度分割?

问题3:
N,D,Maxlength(M),Maxlength(C)间的大小关系?

D<=N
Maxlength(M)<N
Maxlength(C)=N
是这样么?

恳请兄弟们指点一二,小弟谢过了!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
2
keysize/8 是表示N的字节数
如下:Max.length((chars))
因为RSA TOOL 是用miracl来实现的,所以当把M转换成大数后,M<N是指数值上的小于,当然位数小于数值也小于,只有M<N时才能对消息进行加密,在解密时整个密文C都作为一个大数来做,你说的分割涉及到miracl大数库的对大数运算的具体的内部实现,比较复杂
2005-2-17 17:10
0
雪    币: 225
活跃值: (145)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
To cnbragon:
"M<N是指数值上的小于",那位数也可以相等了?只要保证数值小于就可以了!
2005-2-17 17:18
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
4
.....
举个miracl的例子吧
cinstr(m,szSerial);                                   // 将输入的序列号转化为大数       
cinstr(n,"80C07AFC9D25404D6555B9ACF3567CF1");  // 初始化模数N         
cinstr(e,"10001");                             // 初始化公钥e

if(compare(m,n) ==-1)                           // m < n 只有M<N才对能消息加密
{
  powmod(m,e,n,c);                               // 计算 c= m ^ e mod n
}
2005-2-17 17:29
0
雪    币: 225
活跃值: (145)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
谢谢cnbragon!
明白了!

RSAEP((n, e), m)
Input:
(n, e) RSA public key
m message representative, an integer between 0 and n-1
Output:
c ciphertext representative, an integer between 0 and n-1;
or "message representative out of range"

------------------------------------------------
RSADP (K, c)
Input:
K RSA private key, where K has one of the following forms
-a pair (n, d)
-a quintuple (p, q, dP, dQ, qInv)
c ciphertext representative, an integer between 0 and n-1
Output:
m message representative, an integer between 0 and n-1; or
"ciphertext representative out of range"
Assumptions: private key K is valid
2005-2-18 09:00
0
游客
登录 | 注册 方可回帖
返回
//