关于'\ 0'的ASCII消息问题的RSA

时间:2015-01-26 21:40:17

标签: encryption ascii rsa null-character

我想使用汇编编写的RSA算法加密和解密ASCII消息。 我读到,出于安全性和效率原因,加密通常不是按字符方式调用的,但是许多字符被分组并加密在一起(例如维基百科说3个字符被分组)。 我们假设我们要加密消息" aaa"分组2个字符。 " AAA"存储为61616100。 如果我们将两个字符分组并加密得到的半字,则6161块的结果实际上可能类似于0053.这将导致人为的第二个' \ 0'破坏结果消息的字符。 有没有办法解决这个问题? 遗憾的是,使用填充或类似的东西不是一种选择,因为我需要使用相同的函数进行加密和解密。

1 个答案:

答案 0 :(得分:0)

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

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