2011-12-12 201 views
0

如何使用N,P,Q和公钥/私钥e和d来自己加密/解密字符串?RSA字符串加密解密

我试图将每个单独的字符铸造为一个int,执行计算并将其转换回为char,但我似乎在为不同的字符加密后得到相同的字符。

也就是说,这些字符似乎并不是一对一映射的。

for(int i = 0; i < message.length() - 1; i++) 
{ 
    ori = (int)message[ i ]; 

    for(int j = 0; j < e; j++) 
     ori = ((int)message[ i ] * ori) % N; 

    message[ i ] = (char)ori; 
} 

N是两个素数的乘积,e是我试图加密的数的指数。

+2

请显示为您的代码。 – Femaref

回答

1

有些事情要注意一下:

  1. 你不养它到E,你养它到E + 1,因为你开始与消息[I]到1,然后乘以通过消息[i]多次,给e + 1发送消息[i]。
  2. 当你将它作为字符进行转换时,这不太可能奏效,因为没有理由相信它会在字符范围内。除非N小于255,否则大多数情况下它会大于255。
  3. 通常,您不用这种方式编码带有RSA的字符串,因为每个字符串都将编码为唯一的数字,所以它会成为容易受到信件频率的攻击。相反,实际的协议几乎总是通过用RSA对密钥进行编码然后使用密钥使用对称密钥块或流密码对消息进行编码来处理这个问题。