RSA算法四字节数目字加密解密
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;
}
[解决办法]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不会用在太长的数据加密上,一般用在签名或者小部分交换加密,如果你真要用
大块数据加密,那么你自己分片吧。