0

经过很长时间的研究,我终于在 iOS 和 PHP 上进行了编码/解码。我写了一个小算法,在 iOS 和 PHP 上都使用随机创建的 16 字节密钥池。该算法使两个系统保持同步,因此我不会多次使用密钥。

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

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

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

我玩了一下,结果证明 using only[a-z][A-Z][0-9]效果很好。

关于解决我的问题有什么建议吗?

4

1 回答 1

1

您描述的字符中,£并且§不是 ASCII 字符。根据您传输它们的方式,这两个可能已损坏。

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

于 2013-02-11T19:51:06.577 回答