【问题标题】:How to convert a message to an integer to encrypt it with RSA?如何将消息转换为整数以使用 RSA 对其进行加密?
【发布时间】:2013-10-03 01:22:38
【问题描述】:

在 RSA 等加密方法中,我们对表示消息的整数进行操作。我一直在尝试将字符串转换为字节数组并一次处理一个字符,但这似乎过于缓慢,并且 RSA 算法旨在处理整个消息。

我们如何将字符串转换为可以应用我们的加密算法的表示(整数、大整数等)?

【问题讨论】:

    标签: math cryptography rsa


    【解决方案1】:

    在典型用法中,您实际上并没有使用 RSA 加密整个消息。相反,您使用 RSA 加密对称分组密码(如 AES)的加密密钥,然后使用该分组密码加密您的数据流。

    请勿尝试自行执行此操作!您必须非常小心如何进行转换,包括设置安全填充方案以及正确且安全地使用分组密码模式。您可能希望使用语言提供的加密库或 OpenSSL 等标准库。

    希望这会有所帮助!

    【讨论】:

    • 谢谢,这不是生产实施,更多的是教育实施。如果我理解正确,您是说我们生成一个密钥并使用 RSA 对其进行加密,然后使用该密钥来实现 AES?
    • @DamonSwayn- 是的,没错。使用 AES 正确设置时要小心(使用 CBC 或 CTR 模式以确保安全,选择加密随机 IV 等)
    【解决方案2】:

    想想整数和字符串在内存中是如何表示的。一个 32 位整数占用 4 个 8 位字节,一个 64 位整数占用 8 个字节。字符串也存储为字节,在 ASCII 的情况下,每个字符由一个字节表示。 (UTF-8 和 UTF-16 是可变长度编码,但它仍然是字节。)

    没有什么要转换的,因为所有数据类型在内部都是用字节表示的。

    没有理由不能将其扩展为 2048 位整数以用于 RSA。

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 2020-11-15
      • 1970-01-01
      • 2015-06-01
      • 2018-09-05
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多