首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

RSA算法四字节数目字加密解密

2014-01-05 
RSA算法四字节数字加密解密!最近学RSA算法,代码写完了,测试之后发现,4字节以内的都可以加密并且成功解密,

RSA算法四字节数字加密解密!
最近学RSA算法,代码写完了,测试之后发现,4字节以内的都可以加密并且成功解密,但是如果是4字节的数字,比如:2345,加密解密也对,但是解密后和原文不一样,也就是不是2345了,请问这个是什么原因?应该不是代码问题,因为毕竟三位数都成功解密了;以下是加密解密的函数!


int candp(int a,int b,int c)//数据处理函数,实现幂的取余运算 
{
int r=1;
b=b+1;
while(b!=1)

r=r*a;
r=r%c;
b--;

//r=r%c;
return r;


[解决办法]
引用:
Quote: 引用:

RSA有长度限制的,你的D d N要足够长。

不太懂,能详细解释下吗?RSA的长度手什么限制,n=p*q, ed=1 mod(n),这些长度都要多少bit才能满足RSA的安全性?

RSA真实实现是大整数来做(比如N长度1024bits)的,你用int来做,根本没有什么安全性而言。
一般长度起码要在96bits以上的长度.明文长度有如下关系:
根据不同的padding格式,
RSA_PKCS1_PADDING RSA_size-11
RSA_NO_PADDING RSA_size-0
RSA_X931_PADDING RSA_size-2。
举个例子吧,一般密钥1024bits(128 Bytes),那么明文长度不能超过128-11 = 117 Bytes.(采用PKCS1_padding)
所以一般RSA不会用在太长的数据加密上,一般用在签名或者小部分交换加密,如果你真要用
大块数据加密,那么你自己分片吧。


热点排行