2011-05-20 133 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()工作并等等。