【问题标题】:RSA encryption difficultyRSA加密难度
【发布时间】:2017-08-07 11:51:43
【问题描述】:

我正在编写一个 python 脚本来使用 RSA 加密/解密字符串。我对算法本身没有问题,但我不明白如何正确使用它。

我的意思是,单独加密字符串中的每个符号是没有意义的。因为相同的符号会给我们相同的密码(如凯撒密码)。所以我认为我应该将整个消息分成相同长度的块。 但这使得解密消息变得困难。因为在加密块之后,每个块的长度可能会发生变化。因此,在解密时,您不知道某个特定块的开始位置和结束位置。 例如,当我使用 RSA 加密“更强”时,我得到:

5716225862

我将原始消息分成 4 个块,每块 4 个符号。但加密后我收到一条包含 10 个符号的消息。这就是问题所在。 希望,你明白我的意思。对不起我的英语不好。

【问题讨论】:

  • 首先花一整天(8 小时)研究加密​​,互联网上有大量信息。这会给你一个很好的起点。安全地使用加密并不容易。
  • 花一个小时学习PKCS#1,尤其是section 4

标签: encryption rsa public-key-encryption


【解决方案1】:

简单地说,RSA 不用于直接加密纯文本,它用于加密对称密钥(例如 AES),而您将使用此对称密钥加密(并进一步解密)您的纯文本。

由于纯文本可以具有任意大小,因此使用带有流密码(例如 AES-256-GCM)或分组密码(例如 AES-256-CBC)的 AES 对其进行加密。

使用 AES,相同的符号不会给出相同的密码,因为每次加密纯文本时都必须选择一个新的随机 IV(初始化向量)。

因此,您需要使用两步加密方案:使用 RSA 加密对称密钥,并使用此对称密钥加密您的纯文本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 2011-08-14
    • 2015-02-27
    • 2012-03-13
    相关资源
    最近更新 更多