Php 将两个字符串混合成一个较长的字符串

Php 将两个字符串混合成一个较长的字符串,php,security,string,Php,Security,String,我有两个字符串,我想把每个字符串中的字符混合成一个更大的字符串,我如何在PHP中做到这一点?我可以交换字符,但我想要更复杂的东西,因为它是可以猜测的 请不要说md5()已经足够且不可逆转 谢谢你的帮助 编辑:啊,对不起,罗伯。如果有一个解决方案,它只是一个我可以传递两个字符串的函数,它返回一个字符串,那就太好了 返回的字符串必须包含前面两个字符串。不仅仅是一个浓缩,而是将每个字符串的字符混合成一个更大的字符串。如果您想制作一个防篡改的字符串,使其可读,请在其中添加一个安全哈希。MD5确实不受欢迎

我有两个字符串,我想把每个字符串中的字符混合成一个更大的字符串,我如何在PHP中做到这一点?我可以交换字符,但我想要更复杂的东西,因为它是可以猜测的

请不要说md5()已经足够且不可逆转

谢谢你的帮助

编辑:啊,对不起,罗伯。如果有一个解决方案,它只是一个我可以传递两个字符串的函数,它返回一个字符串,那就太好了


返回的字符串必须包含前面两个字符串。不仅仅是一个浓缩,而是将每个字符串的字符混合成一个更大的字符串。

如果您想制作一个防篡改的字符串,使其可读,请在其中添加一个安全哈希。MD5确实不受欢迎,所以试试看。比如说

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

如果您想要一个人类无法读取的字符串,请对其进行加密-查看提供多种选项的扩展名。

除非我遗漏了什么,如果您想要将这些值组合成一个唯一的值,为什么不执行sha1(string1,string2)

使用该函数的一种变体。Sha2或sha256应该足够了,肯定比你能想到的任何东西都好。

我猜你想要可逆的东西,所以你可以把这些值取出来。进一步模糊这两个字符串的一种快速而肮脏的技术是对它们进行base64编码:

base64_encode($string1 . $string2);

谢谢大家。我完全忘记了SHA1——我太投入到解决一个问题中,以至于忘了还有什么其他的问题。:)

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

不管怎样,撕碎的可能性是无穷的,选择你的毒药吧

我要做的是,如果我真的想做这样的事情(偶尔会有用),我会添加另一个元素,随机选择,然后用它洗牌md5字符串。也写下其中的随机元素

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

我偶然发现了一个地方,今天做了类似的事情。我试图找到某个特定电话号码的参考资料——不管它是否出现在国家本地inet上

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


如果他们没有这样做,我就可以出于自己的目的去发现,而不是查看广告,如果使用电话123123的用户在网站上发布了任何广告。

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

编辑:事实上,PHP现在有一个函数:


您能更具体地说明您的要求吗?“将字符串混合在一起”是什么意思?您希望结果具有什么类型的属性?需要进一步澄清:您是否希望能够将单个值取出来?不,这不是必需的-我只希望创建一个唯一标识符,以便将其存储在数据库中。:)如果您只需要一个唯一的id,那么只需使用uniqid()提供的UUID就可以了。md5适用于带有长salt的短字符串(越长越好)。md5的问题是不同长度的输入字符串的冲突问题(所有哈希算法都有冲突问题,只有md5对较短的字符串有冲突问题,然后是大多数)。md5对于使用salt的现有项目是可以的,但是对于新的prjDon使用sha1/etc,而不是使用加密函数进行散列。加密可以被解密,而不是散列,散列“应该”是一种方式;
base64_encode($string1 . $string2);