我想从PHP应用程序向iOS发送和接收加密数据,反之亦然。
一切运行正常,直到我解密从iOS应用程序收到的字符串,它在PHP中显示额外的字符,例如当在iOS中加密字符串(foo)时,这是我用PHP得到的输出。
foo¤º ¤º äØKŒCarrier+†7†ÐHÀ€ôa$aLa°aTa(aX¿€<a@aèaaTwaØwaäwa0®50‡4€B4ÀB4°†4ð†4þ;Ð}2}20¸>@¸> ¸>LGa¿
字符foo存在于解密的字符串中,但有很多额外的字符。
我想知道这是iOS问题还是PHP&amp;如果是IOS可能是什么问题?是编码,填充还是其他任何一种?
P.S:iOS应用程序正在使用RSA_PKCS1_PADDING,当我使用RSA_NO_PADDING时,其他字符就是我得到的输出。
foodrrrrrrøžäØKŒJustify (Undo action name)äØKŒ!Raise Baseline (Undo action name)äØKŒClear Recent Searches?0xÔ\Õ8Ò|Ó`œšÕØf”œš€œšÔ
注意字符串Justify (Undo action name)
,Raise Baseline (Undo action name)
这可能是什么问题?
更新:
这是我的PHP代码:
header('Content-Type: text/html; charset=utf-8');
$encrypt = Model_SSL::getInstance()->encrypt("PankeshRaj@iOS");
echo Model_SSL::getInstance()->decrypt("nhXQ7Yg1o5GzhXLe6x1LoKxK/Sg5qPDdA4SCtuH5LIp2klEPKQLAsOf+2ODg+A30k3EzyAjH+xKun9x4HPNIb67ETe4+84oMTPCk5TTuxOrSMNOjwm6L4mp01frOfT/OOcKvtCs+IuW3fWbbvbw/sgecDMG0IuuhsWvvL9FaOpLXkT8vGBOYh7pQH8Gkworf/dnonf/Rfk1vUYWkWlK7n/ycbl7uVVyIO+v3tcKfDdJuEvr4qOd5z3h323i7zvuHbt04WyPrV9Pjk0Zd9C2xte/K5bGHHTlRNZCEdLp5jhB9r7ljL4ToCpAiKSaBeG0HktXjDdW4+X1piPHox6e9Gw==");
这是我的Model_SSL
<?php
class Model_SSL
{
protected $publicKey;
protected $privateKey;
protected static $ssl;
private function __construct()
{
$this->publicKey = file_get_contents(APPLICATION_PATH.'/../resources/ssl_keys/key.pub');
$this->privateKey = file_get_contents(APPLICATION_PATH.'/../resources/ssl_keys/private.pem');
}
public static function getInstance()
{
if (!isset(self::$ssl)) {
self::$ssl = new self;
}
return self::$ssl;
}
public function encrypt($string)
{
openssl_public_encrypt($string, $cryptedText, $this->publicKey);
return base64_encode($cryptedText);
}
public function decrypt($string)
{
$string = base64_decode($string);
openssl_private_decrypt($string, $decryptedText, $this->privateKey);
return $decryptedText;
}
}
对于Objective-c,我正在尝试使用一个样本库,这里发布的内容非常冗长,这里是我正在使用的库的链接:https://github.com/jslim89/RSA-Example