【问题标题】:RSA String Encryption\DecryptionRSA 字符串加密\解密
【发布时间】:2011-12-12 00:21:32
【问题描述】:

如何使用 N、P、Q 以及公钥/私钥 e 和 d 自己加密/解密字符串?

我尝试将每个单独的字符转换为 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 是我要加密的数字的指数。

【问题讨论】:

    标签: c++ string rsa


    【解决方案1】:

    关于此的一些注意事项:

    1. 您没有将它提升到 e,而是将其提升到 e+1,因为您从 message[i] 开始到 1,然后再将它乘以 message[i] e 次,得到 message[i]到 e+1。
    2. 当您将其转换为 char 时,这不太可能起作用,因为没有理由相信它会在 char 范围内。除非 N 小于 255,否则它更有可能在大多数情况下大于 255。
    3. 一般情况下,您不会以这种方式使用 RSA 对字符串进行编码,因为每个字符串都会编码为唯一的数字,因此容易受到字母频率攻击。相反,实际协议几乎总是通过使用 RSA 对密钥进行编码,然后使用该密钥使用对称密钥块或流密码对消息进行编码来处理此问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2013-06-08
      • 1970-01-01
      • 2018-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多