原始Base64值已编辑但仍然提供相同的普通字符串

时间:2015-06-11 06:23:15

标签: encryption base64 public-key-encryption

我正在使用RSA加密纯文本并将该值转换为base64字符串。但是在解密时我改变了base64字符串并尝试解密它...它给了我相同的原始文本返回。 有什么不对吗?

原始纯文本:007189562312 输出的Base64字符串:VfZN7WXwVz7Rrxb + W08u9F0N9Yt52DUnfCOrF6eltK3tzUUYw7KgvY3C8c + XER5nk6yfQFI9qChAes / czWOjKzIRMUTgGPjPPBfAwUjCv4Acodg7F0 + EwPkdnV7Pu7jmQtp4IMgGaNpZpt33DgV5AJYj3Uze0A3w7wSQ6 / tIgL4 =

改变的Base64的字符串:VfZN7WXwVz7Rrxb + W08u9F0N9Yt52DUnfCOrF6eltK3tzUUYw7KgvY3C8c + XER5nk6yfQFI9qChAes / czWOjKzIRMUTgGPjPPBfAwUjCv4Acodg7F0 + EwPkdnV7Pu7jmQtp4IMgGaNpZpt33DgV5AJYj3Uze0A3w7wSQ6 / tIgL4 = 55

请解释一下。谢谢。

1 个答案:

答案 0 :(得分:1)

我假设您在询问更改的密文是否应该在解密时抛出错误。看起来改变后的字符串只会在末尾添加两个字符,否则就是相同的字符串。

在解析Base 64数据时,您的Base 64库可能会做出一些合理的假设。 Base 64通过将3个字节编码为4个字符来工作。如果最后数据长度不是3的倍数,则必须填充。这由编码字符串末尾的=发出信号。

这也意味着在解析过程中,库知道填充字符在最后并停止解析。如果更改出现在字符串的末尾,则编码的密文不会有效地改变。