C#最快的双向弦缩短

时间:2012-03-23 23:15:53

标签: c# .net

将字符串转换为数字和/或字母串,然后反向工程到原始字符串的最快和最佳性能方法是什么。类似于将字符串转换为哈希码,但这是单向转换。我需要一种双向方法。我正在创建一个简单的网址短片服务,我不想处理数据库。

我认为MD5通过私钥进行加密/解密,但我想还有另外一种可能在性能方面更好的方法。

如果要进行加密/解密,那么处理器上哪个最容易?

谢谢!

2 个答案:

答案 0 :(得分:9)

加密时,不要缩短任何内容。密文与明文的长度大致相同。但是,如果使用加密哈希,则将字符串缩短为哈希长度。缺点是您不再能够将哈希值反转回原始字符串。我认为您既不能使用加密算法也不能使用加密哈希函数来创建URL缩短器。如果可能,您可以实现无限或至少非常高的信息压缩。

答案 1 :(得分:5)

您需要的是无损压缩算法。我的意思是,这是你能够压缩文本的唯一方法,也能够解压缩。

当然,通过压缩,字符串长度会有所不同。平均而言,长度不会像tinyurl使用的Base64 ID那么小。他们能够做到这一点,因为他们将ID和URL存储在数据库中。

然而,这里有几个选项......

如果你走这条路,我会创建一个小的控制台应用程序来测试所有这些的性能。如果您有RAM,将结果缓存到Dictionary中甚至是值得的,这样您就不必为每个请求不断压缩和解压缩URL。

<强>更新

有一个名为smaz的库,它显然是为压缩小字符串而设计的......

  

它可以很好地压缩URL:

     

'http://google.com'压缩了59%

     

'http://programming.reddit.com'压缩了52%

     

'http://github.com/antirez/smaz/tree/master'压缩了46%