Php 解码包含空格的AES字符串

Php 解码包含空格的AES字符串,php,aes,mcrypt,encryption,Php,Aes,Mcrypt,Encryption,在从iPhone应用程序接收URL时,我们对Objective-C中创建的字符串进行解密,并将其作为GET变量传递给我们的PHP网站 我们正在使用: mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $padded_key, base64_decode($base64encoded_ciphertext), 'ecb'); 这在大多数情况下工作正常,但有时我们会收到一个包含空格的字符串,例如: mypage.php?score=IEZrdQ5iUECe9 xyfTY5Cg

在从iPhone应用程序接收URL时,我们对Objective-C中创建的字符串进行解密,并将其作为GET变量传递给我们的PHP网站

我们正在使用:

mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $padded_key, base64_decode($base64encoded_ciphertext), 'ecb');
这在大多数情况下工作正常,但有时我们会收到一个包含空格的字符串,例如:

mypage.php?score=IEZrdQ5iUECe9 xyfTY5Cg==
然后解密失败,结果如下:

有没有人知道如何处理中间有空格的字符串,空间是否应该存在?我本以为编码可能与此有关,但转换为UTF-8/UTF-16没有帮助


非常感谢您的建议。

Base64数据每64个字符包含一个空格,末尾包含0-2个等号。因此,iPhone应用程序应该在将其作为GET变量发送之前对其进行百分比编码。

Base64数据每64个字符包含一个空格,并且在末尾包含0-2个等号。因此,iPhone应用程序在作为GET变量发送之前应该对其进行百分比编码。

您可以使用bin2hex,然后使用pack('H*',hex)对字符串进行解码。我知道这个方法的唯一问题是字符串可能会变大。

您可以使用bin2hex,然后使用pack('H*',hex)对字符串进行解码。我知道这个方法的唯一问题是字符串可能会变大。

Base64可以表示任意字节,这正是密文所必需的。不要重新编码到其他任何内容

一些软件在base64编码的字符串中插入空格和换行符,因此它们适合电子邮件和其他行长度有限的格式。解码时应忽略或删除这些

如果base64编码字符串中有空格,可以在解码之前将其去掉,尽管我认为这应该会自动完成


另一个注意事项:不要使用ECB模式,这是不安全的。使用CBC模式(随消息发送随机初始化向量)。或者更好的是,不要加密URL的一部分,而是使用SSL(或TLS),它将为您处理所有细节。

Base64可以表示任意字节,这正是密文所必需的。不要重新编码到其他任何内容

一些软件在base64编码的字符串中插入空格和换行符,因此它们适合电子邮件和其他行长度有限的格式。解码时应忽略或删除这些

如果base64编码字符串中有空格,可以在解码之前将其去掉,尽管我认为这应该会自动完成

另一个注意事项:不要使用ECB模式,这是不安全的。使用CBC模式(随消息发送随机初始化向量)。或者更好的是,不要加密URL的一部分,而是使用SSL(或TLS),它将为您处理所有细节