将两个字符串混合成一个长字符串PHP

时间:2009-01-05 13:47:38

标签: php security string

我有两个字符串,我想将每个字符串中的字符混合成一个更大的字符串,我怎样才能在PHP中执行此操作?我可以交换字符,但我想要更多复杂,因为它可能被猜到了。

请不要说md5()足够且不可逆转。 :)

$string1 = '9cb5jplgvsiedji9mi9o6a8qq1';//session_id()
$string2 = '5d41402abc4b2a76b9719d911017c592';//md5()

感谢您的帮助。

编辑:对不起,罗布。如果有一个解决方案,它只是一个函数,我可以传递两个字符串,它会返回一个字符串。

返回的字符串必须包含以前的两个字符串。不只是一个连接,而是每个字符串的字符混合成一个更大的字符。

7 个答案:

答案 0 :(得分:4)

如果您想制作一个人类可读的防篡改字符串,请为其添加安全哈希。 MD5确实失宠了,所以试试sha1。例如

$salt="secret";
$hash=sha1($string1.$string2.$salt);
$separator="_";
$str=$string1.$separator.$string2.$separator.$hash;

如果你想要一个人类无法读取的字符串,请加密它 - 查看提供各种选项的mcrypt扩展名。

答案 1 :(得分:4)

使用SHA函数的hash()变体之一。 Sha2或sha256应该足够,当然要比你想出的任何东西都好。

答案 2 :(得分:2)

除非我想要将这些值组合成一个唯一值,否则我会错过一些为什么不做sha1(string1,string2);

答案 3 :(得分:0)

我猜你想要一些可逆的东西,所以你可以把这些价值拿回来。一种快速而肮脏的技术可以进一步模糊这两个字符串:

base64_encode($string1 . $string2);

答案 4 :(得分:0)

谢谢大家。我完全忘记了SHA1 - 我也解决了一个问题,我忘记了那里的其他东西。 :)

答案 5 :(得分:0)

好吧,如果不是md5(),那么sha1()。 :)

无论如何,破坏的可能性是无穷无尽的,选择你的毒药。

我会做什么,如果我真的想做那样的事情(偶尔会有用),我会添加另一个元素,随机选择并随机调整md5字符串。并记下其中的随机元素。

例如,让我们为每个md5字符添加一个随机的2位数字,然后我们将其按数字分割并将第1位数字添加到结果字符串中,然后将第2位数字添加到其前面。

我偶然发现了今天已经完成某种事情的地方。我试图找到一些特定电话号码的引用 - 它是否出现在国家/地区的任何地方。

我访问了一个热门的分类广告网站,该网站提供广告客户的电话号码,当您查看特定广告时,您可以选择查找具有相同电话号码的所有广告。现在,他们所做的是,他们编码了搜索字符串,所以你不是在搜索?phone = 123123,但是类似于?phone == FFYx23 =。

如果他们没有这样做,我将能够找到我自己的目的,而不是检查广告,如果用户手机123123在网站上发布了任何广告。

答案 6 :(得分:0)

如果您希望通过散列验证消息的完整性和真实性 - 您可能希望查看HMAC - PHP中有很多实现使用SHA1和MD5:

http://en.wikipedia.org/wiki/HMAC

编辑:事实上,PHP现在有一个功能:

http://us3.php.net/manual/en/function.hash-hmac.php