PHP加密/解密默认字符集问题

PHP加密/解密默认字符集问题,php,string,encryption,unicode,ascii,Php,String,Encryption,Unicode,Ascii,我需要在一台计算机上加密文件,然后在没有外部库的情况下使用PHP打开另一台计算机。该代码应该在PHP4和PHP5上都能工作 加密函数对字符串进行stru分割,并使用stru分割密码对每个字符(ord)进行编码。然后它使chr和我得到二进制数据。这个二进制数据是使用base64_encode编码的,我得到的是ascii字符串 我将此文件传输到另一台知道密码的计算机。 我让base64_进行解码和解密 有时会出现问题,因为第一台计算机有ASCII默认字符集,第二台计算机有UTF-8。 这就是为什么在

我需要在一台计算机上加密文件,然后在没有外部库的情况下使用PHP打开另一台计算机。该代码应该在PHP4和PHP5上都能工作

加密函数对字符串进行stru分割,并使用stru分割密码对每个字符(ord)进行编码。然后它使chr和我得到二进制数据。这个二进制数据是使用base64_encode编码的,我得到的是ascii字符串

我将此文件传输到另一台知道密码的计算机。 我让base64_进行解码和解密

有时会出现问题,因为第一台计算机有ASCII默认字符集,第二台计算机有UTF-8。 这就是为什么在这些计算机上,nth char$temproraryBinaryString[$n-1]可能具有不同的值


如果我无法在任何一台计算机上控制PHP.ini,我可以要求PHP将所有字符串都视为ASCII吗?

看看这篇文章中的讨论,因为它讨论了双向加密,使用,这是您应该使用的

看看这篇文章的讨论,因为它讨论了双向加密,使用,这是你应该使用的

我错误地标记为重复,但它不是,您所说的是编码而不是加密,请尝试:

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

这将为您提供一个干净的ASCII字符串来处理
str_split()
等等。

我错误地将其标记为重复,但它不是,您所说的是编码而不是加密,请尝试:

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

这将为您提供一个干净的ASCII字符串,以便使用
str_split()
等等。

不要重新发明控制盘,而是使用现有的加密算法。的可能重复项不要重新发明控制盘,而是使用现有的加密算法。可能重复项+用于mcrypt,请注意,这两台服务器需要相同的php版本。我懒得自己去查,但我认为在早期版本和5.3版本之间的实现或某些东西有所改变。请注意,这两台服务器需要相同的php版本。我懒得自己去查,但我认为在早期版本和5.3版本之间,实现或某些东西发生了变化。