2012-03-21 51 views
1

是否有可能,转换加密的字符串(类似于md5),而不会丢失将其解码的能力?PHP:缩小加密值

0TJyj0wX4ZCrsYlANG8QgwBHnGzGU7kr1BEkolr6tY0OdowpA== 

Better: 73a4842f36b4n237m64as23 
+0

本质上,散列是一个方向。您正在寻找转换(或潜在加密)。 – Corbin 2012-03-21 20:54:07

+0

Cryptception ...? – 2012-03-21 20:58:02

+0

@Corbin我编辑了我的帖子。谢谢。 – mate64 2012-03-21 20:59:31

回答

2

散列是隐窝,顾名思义,单向的。您将无法散列您的加密字符串,然后“解除散列”以再次获取加密字符串。

可以,但是,试图“再压缩”被加密后的字符串:

  • 使用无损压缩算法 - 尽管你可能无法获得太多这种方法由于加密数据不压缩好吧,并且对于某些输入集压缩can actually increase the storage requirements
  • 在加密之前压缩数据。根据输入的大小,单独加密可以减小几个百分点(取决于算法),但通常不会超过5-10%(同样,this answer指出这一点)
  • Re-该数据具有较高的“基地”编码(即你的字符串是Base64编码,您可以切换到Base85) - 但这只是导致在PHP来加密7% savings
+1

无损压缩对于散列或加密数据也不会工作太好,数据看起来就像压缩算法中的随机数据。这比试图压缩JPEG或MP3文件更糟糕。 – 2012-03-21 22:03:54

+0

@owlstead:+1确实,我应该注意到在答案中......编辑时间! – 2012-03-22 14:52:43

+0

因为msec没有告诉他他需要它 - >他可以对它进行二进制编码 – 2012-04-05 15:06:36

0

您可以使用RSA加密你的数据 看到this,它谈论在PHP

+0

RSA加密肯定不会“缩小”它...... – 2012-03-21 22:01:28

0

最好的办法是使用mcrypt扩展。 http://www.php.net/manual/en/book.mcrypt.php

encryptiondecryption的示例。

我也建议base64对加密结果进行编码。

缩小对小数据(例如密码)没有意义。

+0

我不认为通用的加密/解密样本是有用的。如果你刚发布最后一句话,我会+1。 – 2012-03-21 22:05:27