我想加密一个字符串并将其嵌入到 URL 中,因此我想确保加密的输出不大于输入。
AES 是可行的方法吗?
不可能创建任何始终会创建比输入更小的输出的算法,但可以将任何输出反转回输入。如果您允许“不大于输入”,那么基本上您只是在谈论同构算法always与输入的大小相同。这是由于鸽巢原理 http://en.wikipedia.org/wiki/Pigeonhole_principle.
除此之外,加密通常有一点填充(例如“到最近的 8 字节,向上舍入”——在 AES 中,这就是16字节)。哦,最重要的是,您还遇到了文本和二进制之间转换的问题。加密算法通常以二进制形式工作,但 URL 是以文本形式工作的。即使您假设使用 ASCII,您最终也可能会得到一个非 ASCII 的加密二进制值。在文本中表示任意二进制数据的最简单方法是使用 base64。还有其他非常复杂的替代方案,但一般的“将文本转换为二进制、加密、将二进制转换为文本”模式是最简单的一种。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)