RNCryptor PHP加密函数返回无效的base64数据

时间:2014-01-15 21:30:20

标签: php json encryption cryptography rncryptor

我在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()函数生成)。

1 个答案:

答案 0 :(得分:2)

经过大量调试后,问题变成了我在iOS上使用的base64解码器。我最初使用的是此blog post中的NSData + Base64类别。这是有缺陷的。

我最终使用了实施here。现在一切都解密得很好。 :)