2009-01-05 120 views
0

我有兩個字符串,我想將每個字符串中的字符混合成一個更大的字符串,我該如何在PHP中執行此操作?我可以交換字符,但我想要更多複雜,因爲它可以被猜到。將兩個字符串混合成一個更長的字符串PHP

而且請不要說md5()已經足夠且不可逆轉。 :)

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

謝謝你的任何幫助。

編輯:啊對不起Rob。如果有一個解決方案,它只是一個我可以傳遞兩個字符串的函數,而且它返回一個字符串,那將是非常好的。

返回的字符串必須包含兩個以前的字符串。不只是一個連接,而是每個字符串的字符混合成一個更大的字符。

+0

您能更具體地瞭解您的要求嗎?你的意思是什麼,「將這些字符串混合在一起」,以及你想要結果具有哪些屬性? – Rob 2009-01-05 13:51:12

+0

需要進一步說明:您是否希望能夠取回個別值? – Rob 2009-01-05 14:02:14

回答

4

如果您想製作一個人類可讀的防篡改字符串,請爲其添加安全哈希。 MD5確實不受歡迎,所以請嘗試sha1。例如

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

如果你想不能由人來閱讀一個字符串,它加密 - 檢查出mcrypt擴展,它提供了多種選擇。

2

除非我錯過了某些東西,如果你想將這些值組合成一個唯一值,爲什麼不做sha1(string1,string2);

4

使用hash()功能的SHA變種之一。 Sha2或sha256應該足夠,當然比任何你想得到的都好。

0

我猜你想要一些可逆的東西,所以你可以將這些值返回。一種快速和骯髒的技術進一步模糊這兩個字符串將基地64編碼:

base64_encode($string1 . $string2); 
0

謝謝大家。我完全忘記了SHA1 - 解決了一個我忘了還有什麼問題的問題。 :)

0

那麼,如果不是md5(),那麼sha1()。 :)

無論如何,破解的可能性是無止境的,選擇你的毒藥。

我會怎麼做,如果我真的想這樣做類似的東西(可以是偶爾有用),我會添加其他元素,選擇隨機,並通過它洗牌MD5字符串。並在其中寫下隨機元素。

例如,讓我們添加到每個MD5字符隨機2位數字,我們然後通過數字拆分和第1位添加到結果字符串,和第2位 - 在前面加上它。

我偶然發現了某種地方,那種地方今天已經完成了。我試圖找到某個特定電話號碼的參考 - 無論它是否出現在本國的任何地方 - 本地inet或不。

我參觀了一個流行的分類廣告網站,這讓廣告客戶的電話號碼,你可以選擇,當你正在尋找一個特定的廣告,找到具有相同的電話號碼的所有廣告。現在,他們做了什麼,但是,他們編碼搜索字符串,所以你不是在尋找?phone = 123123,但類似的東西?電話== FFYx23 =。

如果他們沒有這樣做,我將能夠找到出於我自己的目的,而不是檢查廣告,如果用戶與電話123123已在該網站上發佈任何廣告。