将字符串转换为数字和/或字母串,然后反向工程到原始字符串的最快和最佳性能方法是什么。类似于将字符串转换为哈希码,但这是单向转换。我需要一种双向方法。我正在创建一个简单的网址短片服务,我不想处理数据库。
我认为MD5通过私钥进行加密/解密,但我想还有另外一种可能在性能方面更好的方法。
如果要进行加密/解密,那么处理器上哪个最容易?
谢谢!
答案 0 :(得分:9)
加密时,不要缩短任何内容。密文与明文的长度大致相同。但是,如果使用加密哈希,则将字符串缩短为哈希长度。缺点是您不再能够将哈希值反转回原始字符串。我认为您既不能使用加密算法也不能使用加密哈希函数来创建URL缩短器。如果可能,您可以实现无限或至少非常高的信息压缩。
答案 1 :(得分:5)
您需要的是无损压缩算法。我的意思是,这是你能够压缩文本的唯一方法,也能够解压缩。
当然,通过压缩,字符串长度会有所不同。平均而言,长度不会像tinyurl使用的Base64 ID那么小。他们能够做到这一点,因为他们将ID和URL存储在数据库中。
然而,这里有几个选项......
如果你走这条路,我会创建一个小的控制台应用程序来测试所有这些的性能。如果您有RAM,将结果缓存到Dictionary中甚至是值得的,这样您就不必为每个请求不断压缩和解压缩URL。
<强>更新强>
有一个名为smaz的库,它显然是为压缩小字符串而设计的......
它可以很好地压缩URL:
'http://google.com'压缩了59%
'http://programming.reddit.com'压缩了52%