カテゴリー別

お絵描き、デザイン

写真、動画関連ソフト

アメーバピグ専用ソフト

ホームページ関連

画像処理

スキャナー用

SEO 関連

お楽しみ

その他

過去ログ

2017年08月04日(金)

.NET RSACryptoServiceProvider と php の連携、その2

今日も、Windows クライアントと php で
RSA の暗号、複合を行う方法について調査しました。

具体的には以下の 4 種類ができれば OK です。

Windows クライアントで暗号化 > php で復元
php で暗号化 > Windows クライアントで復元
Windows クライアントで署名 > php で検証
php で署名 > Windows クライアントで検証

で、昨日調べた方法は、とても古かったので
新しいやり方を調べました。

具体的に何が古かったかというと、
phpseclib のバージョンです。

phpseclib 0.2.1a でした。古っ。

リリース中の最新バージョンは、phpseclib 2.0.6
みたいなので、それで再構成しました。

Windows クライアントで .NET を使用する場合、RSA は、
RSACryptoServiceProvider (.NET 4.0) を使います。

で、XML 形式の公開鍵、秘密鍵は、 ToXmlString
を使えば、簡単に取得できます。

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

string publicKey = rsa.ToXmlString(false);
string privateKey = rsa.ToXmlString(true);

で、OK です。

昨日は、この xml 形式の表現を php にインポートするのに、
ココ にある、RSA_XML.php を利用しましたが、phpseclib 2.0.6
には、XML 形式でのインポート機能があるので、不要になります。

具体的には、こんな感じです。公開鍵 ↓。

$rsa = new RSA();
$rsa->setSignatureMode(RSA::SIGNATURE_PKCS1);
$rsa->loadKey(xml_public_key(), RSA::PUBLIC_FORMAT_XML);

秘密鍵の場合 ↓。

$rsa = new RSA();
$rsa->setSignatureMode(RSA::SIGNATURE_PKCS1);
$rsa->loadKey(xml_private_key(), RSA::PRIVATE_FORMAT_XML);

ちなみに、setSignatureMode は .NET と
互換性のある形式で署名と検証を行う場合に必要です。
すなわち、暗号化と複合化には、不要です。

あとはだいたい昨日と同じなので、
昨日の記事も参考にしてくださいね。

・・・

どっちかというと、最新版の
phpseclib のインストールに手間どったので
次の記事に書いときます。

ご意見・ご要望連絡窓口


コメント
コメントする