【发布时间】:2013-10-03 01:22:38
【问题描述】:
在 RSA 等加密方法中,我们对表示消息的整数进行操作。我一直在尝试将字符串转换为字节数组并一次处理一个字符,但这似乎过于缓慢,并且 RSA 算法旨在处理整个消息。
我们如何将字符串转换为可以应用我们的加密算法的表示(整数、大整数等)?
【问题讨论】:
标签: math cryptography rsa
在 RSA 等加密方法中,我们对表示消息的整数进行操作。我一直在尝试将字符串转换为字节数组并一次处理一个字符,但这似乎过于缓慢,并且 RSA 算法旨在处理整个消息。
我们如何将字符串转换为可以应用我们的加密算法的表示(整数、大整数等)?
【问题讨论】:
标签: math cryptography rsa
在典型用法中,您实际上并没有使用 RSA 加密整个消息。相反,您使用 RSA 加密对称分组密码(如 AES)的加密密钥,然后使用该分组密码加密您的数据流。
请勿尝试自行执行此操作!您必须非常小心如何进行转换,包括设置安全填充方案以及正确且安全地使用分组密码模式。您可能希望使用语言提供的加密库或 OpenSSL 等标准库。
希望这会有所帮助!
【讨论】:
想想整数和字符串在内存中是如何表示的。一个 32 位整数占用 4 个 8 位字节,一个 64 位整数占用 8 个字节。字符串也存储为字节,在 ASCII 的情况下,每个字符由一个字节表示。 (UTF-8 和 UTF-16 是可变长度编码,但它仍然是字节。)
没有什么要转换的,因为所有数据类型在内部都是用字节表示的。
没有理由不能将其扩展为 2048 位整数以用于 RSA。
【讨论】: