2010-08-25 46 views
3

我正在研究缩短/加密长度从150到250个字符到使用算法最多12个字符的URL的可能性。最初我怀疑这是可能的,但我想利用StackOverflow的伟大思想:)如何在数学方法中缩短网址

该算法应该是一个可以用经典的asp,sql,c#,vb或foxpro或其他语言编写的算法。

即使没有数据库中心的方法,这甚至可能吗?

我在读here AES在CFB模式下,会做一个流密码并且输出长度将和输入长度一样。有什么办法可以缩短它吗?

+0

您正在寻找的词是“压缩”,而不是“加密”。这就是为什么AES不会帮助你。 – 2010-08-25 19:32:25

回答

4

与往常一样,答案是“取决于”。有一个数学理论讨论了一堆数据的“信息内容”。如果你的数据本来是这样的字符串:

lleAgByD2rREjzqj85g68207NsjspdINfPRNvU9udgWw7y4qXh0EQLSy0yEi2 

那么信息含量比,如果你的字符串是这样的大得多:

one zero one one zero one zero zero one zero one one zero one 

即使琴弦实际上是相同的长度。使用压缩,可以减少表达相同含义所需的位数,但只能减少到一个点。这一点取决于原始信息的信息内容。

对于我来说,150到250个字符的字符串信息量很少,以至于可以有效压缩到12个字符,这似乎不太可能。您可能必须将较长的数据存储在数据库中,并为每个数据项分配一个较短的“密钥”。

要进一步阅读,首先要开始的地方是关于Information theory的维基百科文章。

+0

也许一个例子会有所帮助。我正在寻找压缩下面的字符串?来源= stackoverflow&f_name = Robert&l_name = Smith&phone = 212-224-1222&address = 124 clark st&city = Chicago&state = IL&zip = 60644&custom_field1 = customer data&custom_field2 = customer data2&custom_code = 123345 - 总共196个字符,但根据数据可能更长或更短。基于此,我们可以确定合适的压缩算法吗? 谢谢! – kiev 2010-08-25 20:37:22

+0

@kiev:我看不出压缩是如何帮助您将数据量转换为12个字符的。这不会发生,对不起。您应该调查将数据存储在数据库中,并使用一个简短键稍后查看。 – 2010-08-26 00:24:30

1

你的目标主要是缩短还是加密?您大概可以专门设计一种足够大的压缩算法来存储已知字符集的URL,但这对于加密目的不会有效。我强烈怀疑你可以得到一个加密的声音加密算法来实现指定的压缩级别,更不用说你不讨论可能与你的方案相关的允许密钥长度。

1

你没有提到如果你只是想减少URL的长度或使用缩短的URL(比如tinyurl)。这是你的意图吗?如果是这种情况,那么您可以为URL创建散列并在内部使用该散列来映射到实际的URL。然后,您选择的短的URL取决于散列算法。 根据您的意图,您可以选择回复中建议的选项之一。

+0

我的目标是缩短,但没有集中的数据库存储。所以人们可以基于共享密钥来重建url。如何做到这一点? – kiev 2010-08-25 20:25:30

+0

但是,你有任何形式的存储?用于缩短网址和实际网址之间映射的共享存储/内存存储? – Gangadhar 2010-08-27 05:56:12

1

对不起,但没有办法。在这种情况下,缩短意味着失去独特的信息。 也许你可以为每个字符串生成唯一的密钥(散列),但它不会帮助你解开数据,除非没有提供字典(静态信息)。

检查ZIP或RAR是如何工作的,例如