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

我在iOS项目中使用RNCryptor进行加密。 该应用程序解密从服务器发送的JSON字符串。 在服务器上,字符串使用RNCryptor回购库中未修改的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加密函数的行为如此?

PS传入的JSON字符串非常有效(使用PHP json_encode()函数生成)。


经过很多调试后,问题变成了我在iOS上使用的base64解码器。 我最初使用这篇博文中的NSData + Base64类。 它有缺陷。

我最终在这里使用了实现。 现在一切都解密了。 :)

链接地址: http://www.djcxy.com/p/68331.html

上一篇: RNCryptor PHP encrypt function returns invalid base64 data

下一篇: Unable to decrypt data encoded via OpenSSL on iPhone