我将openssl加密字符串从使用PHP的服务器发送到iOS,反之亦然,在使用PHP的服务器中,我需要加密/解密字符串,与iOS一样,除了从iOS接收到的字符串包含额外字符外,一切都正常工作,在很少搜索之后,我了解到在默认情况下,RSA加密应用了PKCS1填充,例如在加密字符串中附加额外字符。
加密字符串foo在解密后将获得此输出。
foo¤º ¤º äØKŒCarrier+†7†ÐHÀ€ôa$aLa°aTa(aX¿€<a@aèaaTwaØwaäwa0®50‡4€B4ÀB4°†4ð†4þ;Ð}2}20¸>@¸> ¸>LGa¿我原以为PHP会从字符串中删除那些不需要的填充,但不幸的是它没有,我能想到的唯一解决办法就是沿着字符串发送长度,并去掉这些不需要的字符,例如,在添加长度之后,解密的字符串将是这样的。
3_foo¤º ¤º äØKŒCarrier+†7†ÐHÀ€ôa$aLa°aTa(aX¿€<a@aèaaTwaØwaäwa0®50‡4€B4ÀB4°†4ð†4þ;Ð}2}20¸>@¸> ¸>LGa¿我可以得到初始的3_,即字符串的长度,然后删除其余的。
我想从您那里知道这是否可以接近,或者是否有其他选择,或者PHP是否应该自动地为我这样做。
如果您想看看我正在使用的代码,下面是另一篇文章:Openssl decryption displays extra characters
感谢您的回复。
发布于 2014-08-29 10:51:20
对于那些在移除填充物方面有困难的人来说,这就是我为解决方案所做的。
9_ )这解决了我的问题,希望这对别人也有帮助。
https://stackoverflow.com/questions/25278307
复制相似问题