2011-05-20 93 views
1

我需要在一臺計算機上加密文件,並在沒有外部庫的情況下使用PHP打開另一個文件。該代碼應該可以在PHP4和PHP5上運行。PHP加密/解密default_charset問題

加密函數使字符串str_split並使用str_split的密碼對每個字符(ord)進行編碼。然後它使得chr和我得到二進制數據。這個二進制數據是使用base64_encode進行編碼的,我得到了ascii字符串。

我將此文件傳輸給知道密碼的另一臺計算機。 我做base64_decode並進行解密。

問題出現有時是因爲第一臺計算機有ASCII default_charset,第二臺有UTF-8。 這就是爲什麼nth-char $ temproraryBinaryString [$ n-1]在這些計算機上可能有不同的值。

如果我無法在任何這些計算機上控制php.ini,我可以讓PHP將所有字符串視爲ASCII嗎?

+0

不要重新發明輪子,而應使用現有的加密算法。 – Gumbo 2011-05-20 16:24:41

+0

可能出現[使用PHP加密和解密的最佳方式?](http://stackoverflow.com/questions/1289061/best-way-to-use-php-to-encrypt-and-decrypt) – 2011-05-20 16:45:37

回答

0

我錯誤地標記爲複製,但它不是,你在說什麼是編碼沒有加密,只是嘗試:

$ascii = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $string); 

這應該給你一個乾淨的ASCII字符串,str_split()工作並等等。