0

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

原始测试:

腌制__1Y´NSÍMößlf QÑ≈ˆ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 对输入字符串做了什么。据我所知,它似乎将编码更改为某种东西。如果有人知道为什么会发生这种情况以及如何防止它,请告诉我。

4

1 回答 1

1

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

...

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

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

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

尽管您所拥有的不是某些特定字符集中的文本,但它并没有多大意义。

请参阅每个程序员绝对、肯定需要了解的有关使用文本的编码和字符集以获取背景信息。

于 2012-11-13T05:30:25.323 回答