我想使用汇编编写的RSA算法加密和解密ASCII消息。 我读到,出于安全性和效率原因,加密通常不是按字符方式调用的,但是许多字符被分组并加密在一起(例如维基百科说3个字符被分组)。 我们假设我们要加密消息" aaa"分组2个字符。 " AAA"存储为61616100。 如果我们将两个字符分组并加密得到的半字,则6161块的结果实际上可能类似于0053.这将导致人为的第二个' \ 0'破坏结果消息的字符。 有没有办法解决这个问题? 遗憾的是,使用填充或类似的东西不是一种选择,因为我需要使用相同的函数进行加密和解密。
答案 0 :(得分:0)
RSA的输出是一个数字。通常这个数字被编码为八位字节串(或字节数组)。您不应将结果视为字符串。您需要将其视为字节数组,其长度与模数相同(或至少是模数的长度,以字节为单位)。
除了包含零(空终止符)的结果之外,字符可以具有任何值,包括不可打印的字符,例如控制字符和7F
。如果要将结果视为可打印字符串,请转换为十六进制或base64。