我在iOS项目中使用RNCryptor进行加密。该应用程序解密从服务器发送的JSON字符串。在服务器上,使用RNCryptor repo中的未修改版本的PHP函数对字符串进行加密。
使用相同的密码加密所有字符串,返回的base64数据有时对于传递给RNCryptor PHP加密函数的不同JSON字符串无效。在应用程序上,我在尝试解密来自服务器的数据时看到此错误: “操作无法完成。(net.robnapier.RNCryptManager错误-4301。)”
为了向您展示一些示例,这个base64字符串被成功解密:
AwHwsZqlDpvAcmWX92UtkQSKcHOq18gLsLFtP4FujV3DtXVrtGL86CFY9KAs23HaAoYINTLH3ouUJPpyQEcfXni + rJUJghTFBB24kk52aU0GQ / 8IIgfnXPUywUuNwD4n7DnweaS3DdmdhFBQIUpSaCEg4T5bMPhIvUAndVMvJwc / SjbhJoB + bUqRDcPYXPzMiEW1i4jea / ssE87PcX9 / NZtfkoNyiY7KLRy / dhgsADde1Q ==
然而,这个失败了:
AwHH7y0mnQvtWNCKa73jnS2DG63ylqDBc5iema3G6 + / + EkwPxiIkrPQHyJLvd3MO3mMIPsJjDK1C3uBCoHDc Gzm0NJhBa08zs1twzZQ1jBdyt / q2AnGX99nku7MqF1oJOJ8nN1lriwYcFyvjBoBkEAAG28umjwxb5Y1t29dXtJzCwsrEVERs + SNkRE5C / J ++ bMPTV28EmR7LviyaMFAzpT + F5yUlLp2zRQgaQfyG8RlJTcvc + IqsrOisrDn7umDg + II / Z9GDLlMkhu7OL1lHfcmD
似乎只有具有“=”字符的base64字符串才能成功解密。同样,我使用相同的密码加密&解密这两个字符串。为什么PHP加密函数的行为如此?
P.S。传入的JSON字符串完全有效(使用PHP json_encode()函数生成)。