gpt4 book ai didi

c++ - RSA 字符串加密\解密

转载 作者:行者123 更新时间:2023-11-28 08:13:13 24 4
gpt4 key购买 nike

如何使用 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 是我要加密的数字的指数。

最佳答案

关于此的一些注意事项:

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

关于c++ - RSA 字符串加密\解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8468638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com