C#最快的双向弦缩短

Lev*_*kon 2 .net c#

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

我通过私钥考虑了MD5加密/解密,但我想还有另外一种可能在性能上更好的方法.

如果加密/解密是要走的路,那么处理器上哪个最容易?

谢谢!

Mar*_*age 9

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


Ste*_*ham 5

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

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

不过,这里有几个选项......

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

UPDATE

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

它可以很好地压缩URLS:

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

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

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