我正在研究使用算法将长度为 150 到 250 个字符的 URL 缩短/加密到最多 12 个字符的可能性。最初我怀疑这是可能的,但我想利用 StackOverflow 的伟大思想:)
该算法应该是一种可以用经典的 asp、sql、c#、vb 或 foxpro 或其他语言编写的算法。
如果没有以数据库为中心的方法,这是否可能?
我在这里读到CFB 模式下的 AES 将执行流密码,并且输出长度将与输入长度相同。有什么办法可以缩短更多吗?
我正在研究使用算法将长度为 150 到 250 个字符的 URL 缩短/加密到最多 12 个字符的可能性。最初我怀疑这是可能的,但我想利用 StackOverflow 的伟大思想:)
该算法应该是一种可以用经典的 asp、sql、c#、vb 或 foxpro 或其他语言编写的算法。
如果没有以数据库为中心的方法,这是否可能?
我在这里读到CFB 模式下的 AES 将执行流密码,并且输出长度将与输入长度相同。有什么办法可以缩短更多吗?
一如既往,答案是“视情况而定”。有一种数学理论讨论了一堆数据的“信息内容”。如果您的数据最初是这样的字符串:
lleAgByD2rREjzqj85g68207NsjspdINfPRNvU9udgWw7y4qXh0EQLSy0yEi2
那么信息内容比你的字符串看起来像这样大得多:
one zero one one zero one zero zero one zero one one zero one
即使字符串实际上是相同的长度。使用压缩,您可以减少表达相同含义所需的位数,但只能减少到一个点。这一点取决于原始消息的信息内容。
在我看来,您的 150 到 250 个字符的字符串的信息内容太少,以至于可以有效地压缩到 12 个字符,这似乎不太可能。您可能必须将较长的数据存储在数据库中,并为每个数据项分配一个较短的“键”。
如需进一步阅读,可以从 Wikipedia 关于信息论的文章开始。
您的目标主要是缩短还是加密?您可能可以专门化一种压缩算法,足以显着存储已知字符集的 URL,但这对于加密目的无效。我强烈怀疑您是否可以获得一种加密合理的加密算法来实现指定的压缩级别,更不用说您没有讨论可能与您的方案相关的允许密钥长度。
您没有提到您是否只想减少 URL 长度或使用缩短的 URL 来做某事(就像 tinyurl 一样)。这是你的意图吗?如果是这种情况,那么您可以为 URL 创建散列并在内部使用该散列映射到实际 URL。那么您对短 URL 的选择取决于散列算法。根据您的意图,您可以选择回复中建议的选项之一。
对不起,但没办法。在这种情况下,缩短意味着丢失唯一信息。也许您可以为每个字符串生成唯一的键(哈希),但它不会帮助您解包数据,除非没有提供字典(静态信息)。
检查 ZIP 或 RAR 的工作方式,例如