2013-02-11 33 views
0

经过很长时间的研究,我终于在iOS和PHP上进行了编码/解码。我写了一个在iOS和PHP上使用随机创建的16字节密钥池的小算法。 该算法保持两个系统同步,以便我不多次使用这些密钥。密钥中的AES-128 UTF-8字符(iOS↔PHP)

但是我的密钥包含一些UTF8字符(我认为)。我使用的是标准[a-z][A-Z][0-9]字符,包括这些特殊字符:

!\"§$%&/()=?+-*#.,£[]|{} 

不幸的是,使用这些键之一时,解密PHP的失败。在iOS上,我在stringByAddingPercentEscapes:方法上使用了一个扩展,它可以转义更多的字符。然后我将转义的数据作为POST变量发送到服务器。

我玩了一下,结果证明只使用[a-z][A-Z][0-9]的效果很好。

解决我的问题的任何建议?

回答

1

您描述的字符中,£§不是ASCII字符。根据你如何传输它们,这两个可能会被破坏。

这就是说 - 加密密钥是数据,而不是字符串。如果您将加密密钥表示为NSData而不是NSString,字符集将不再是问题,您应该能够使用任意随机生成的密钥,而不仅仅是由这85个字符组成的密钥。

+0

这个问题其实不在Obj-C中。我的问题是PHP。我可以(无论如何)将字符串转换或转换为原始数据并使用它解密? – 2013-02-12 16:13:55

+0

PHP字符串是字节字符串。没有区别。 – duskwuff 2013-02-12 17:09:24

+0

然后我注定要使用ASCII-Only-Keys,对...感谢您的帮助! – 2013-02-13 15:41:57

相关问题