php-Script更改字符串输入编码?

时间:2012-11-13 05:12:14

标签: php http encoding aes

我正在开发一个项目,我需要通过php脚本传递加密密码。密码文本在aes中加密。要查看php脚本是否“正确读取”输入字符串,我会回显输入字符串。不幸的是,加密文本与通过网址输入的文本不同。

原始测试:

  

Salted__1Y'NSÍMößlflQÑ≈9%ÃíB5I

使用命令在mac上加密:

  

openssl enc -aes-256-cbc -salt -in input.txt -out encryptedtext.txt

使用密码加密:test

要解密的命令:openssl enc -d -aes-256-cbc -in encryptedtext.txt

解密内容:hi

我通过脚本运行后得到了这个:

  

Salted__1YÂ'NSÃMößlï¬,QÃ'≆9%ÃÃB5I

我是php和这个东西的新手,所以我不确定php对输入字符串的确切作用。从我所知,它似乎改变了编码。如果有人知道为什么会这样,以及如何防止它,请告诉我。

1 个答案:

答案 0 :(得分:1)

无论如何,你所拥有的是二进制乱码。这不是文字。它解析的任何文本只是它在所选编码中代表的字符的巧合。

...

是的,这意味着差异来自于用于解释二进制乱码的编码是不同的。 CLI上的原始文件可能被解释为UTF-8,而浏览器中的PHP输出(?)被解释为Latin-1。或者其他一些组合。

如果您要输出到浏览器,请设置应该使用以下内容解释内容的字符集:

header('Content-Type: text/html; charset=utf-8');

虽然你所拥有的不是一些特定字符集中的文字,但它没有那么多意义。

有关背景信息,请参阅What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text