我正在使用RSA加密纯文本并将该值转换为base64字符串。但是在解密时我改变了base64字符串并尝试解密它...它给了我相同的原始文本返回。 有什么不对吗?
原始纯文本:007189562312 输出的Base64字符串:VfZN7WXwVz7Rrxb + W08u9F0N9Yt52DUnfCOrF6eltK3tzUUYw7KgvY3C8c + XER5nk6yfQFI9qChAes / czWOjKzIRMUTgGPjPPBfAwUjCv4Acodg7F0 + EwPkdnV7Pu7jmQtp4IMgGaNpZpt33DgV5AJYj3Uze0A3w7wSQ6 / tIgL4 =
改变的Base64的字符串:VfZN7WXwVz7Rrxb + W08u9F0N9Yt52DUnfCOrF6eltK3tzUUYw7KgvY3C8c + XER5nk6yfQFI9qChAes / czWOjKzIRMUTgGPjPPBfAwUjCv4Acodg7F0 + EwPkdnV7Pu7jmQtp4IMgGaNpZpt33DgV5AJYj3Uze0A3w7wSQ6 / tIgL4 = 55
请解释一下。谢谢。
答案 0 :(得分:1)
我假设您在询问更改的密文是否应该在解密时抛出错误。看起来改变后的字符串只会在末尾添加两个字符,否则就是相同的字符串。
在解析Base 64数据时,您的Base 64库可能会做出一些合理的假设。 Base 64通过将3个字节编码为4个字符来工作。如果最后数据长度不是3的倍数,则必须填充。这由编码字符串末尾的=
发出信号。
这也意味着在解析过程中,库知道填充字符在最后并停止解析。如果更改出现在字符串的末尾,则编码的密文不会有效地改变。