首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenSSL加密填充问题

OpenSSL加密填充问题
EN

Stack Overflow用户
提问于 2014-08-13 04:52:01
回答 1查看 2.1K关注 0票数 0

我将openssl加密字符串从使用PHP的服务器发送到iOS,反之亦然,在使用PHP的服务器中,我需要加密/解密字符串,与iOS一样,除了从iOS接收到的字符串包含额外字符外,一切都正常工作,在很少搜索之后,我了解到在默认情况下,RSA加密应用了PKCS1填充,例如在加密字符串中附加额外字符。

加密字符串foo在解密后将获得此输出。

代码语言:javascript
复制
foo¤º   ¤º  äØKŒCarrier+†7†ÐHÀ€ôa$aLa°aTa(aX¿€<a@aèaaTwaØwaäwa0®50‡4€B4ÀB4°†4ð†4þ;Ð}2}20¸>@¸> ¸>LGa¿

我原以为PHP会从字符串中删除那些不需要的填充,但不幸的是它没有,我能想到的唯一解决办法就是沿着字符串发送长度,并去掉这些不需要的字符,例如,在添加长度之后,解密的字符串将是这样的。

代码语言:javascript
复制
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

感谢您的回复。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-29 10:51:20

对于那些在移除填充物方面有困难的人来说,这就是我为解决方案所做的。

  1. 我在每个字符串的开头添加了字符串长度,我的字符串看起来如下: 9_foostring¤º,äØKŒCarrier+†7†ÐHÀ€ôa$aL°aTa(aX¿€@¸> )
  2. 从字符串开头获取长度前缀(在本例中为9_ )
  3. 在没有长度前缀的情况下拆分字符串,现在我的字符串看起来如下: äØKŒCarrier+†7†ÐHÀ€ôa$aL°aTa(aX¿€@¸> )
  4. 获取字符串的前9个字符,然后去掉其余的字符。

这解决了我的问题,希望这对别人也有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25278307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档