1

我想使用用汇编语言编写的 RSA 算法来加密和解密 ASCII 消息。我读到出于安全和效率的原因,加密通常不称为字符加密,而是将许多字符分组并加密在一起(例如,维基百科说 3 个字符被分组)。让我们假设我们要加密包含 2 个字符的消息“aaa”。“aaa”存储为 61616100。如果我们将两个字符分组并加密生成的半字,则 6161 块的结果实际上可能类似于 0053。这将导致人为的第二个 '\0' 字符破坏生成的消息。有没有办法解决这个问题?不幸的是,使用填充或类似的东西不是一个选项,因为我需要使用相同的函数来加密和解密。

4

1 回答 1

0

RSA 的输出是一个数字。通常这个数字被编码为一个八位字节串(或字节数组)。您不应将结果视为字符串。您需要将其视为具有与模数相同长度的字节数组(或至少以字节为单位的模数长度)。

除了包含零(空终止符)的结果之外,字符可以具有任何值,包括不可打印字符,例如控制字符和7F. 如果要将结果视为可打印字符串,请转换为十六进制或 base64。

于 2015-01-26T23:47:07.547 回答