2016-09-22 8 views
0

im new in PHP Cryptoと私はopensslを使って暗号操作を行っています。 RensaはPEMフォーマットが必要ですが、16進法(n)、私的指数(d)、公開指数(e)を持っています。 このコンポーネントから秘密鍵を生成するにはどうすればよいですか? そして、私の英語には申し訳ありません。PHPの指数、モジュラス、プライベート指数からプライベートキーを取得する方法は?

+1

あなたは役に立つと思っている/確認済みの情報へのリンクがいくつかありますか?あなたの質問にそれらを加えてください。 –

+0

http://nmichaels.org/rsa.py 例では、上記のサイトはn、e、dコンポーネントを取得しており、rsa暗号化操作を行っています。 この3つのコンポーネントから復号化の秘密鍵を取得するにはどうすればいいですか? –

+0

@ MuhammedN.Kartal - あなたはnとdだけで解読できますが、効率的ではないので、実際の*実装で余分なCRTパラメータを使用するのはなぜですか?現実のRSA実装と教科書-RSA実装は、異なることを行います。もう一つのテキストブック - RSAの実装はしません:パディング。その教科書-RSAの実装は、教室での目標は/一般的な/アイデアを与えることであるため、(他のものの中でも)既知の平文攻撃の対象となります。 – neubert

答えて

0

RSA秘密鍵には通常、他のパラメータも含まれています。モジュラス(pとq)と他のパラメータを作成するために使用された素数は、解読を高速化する中国の剰余定理の使用を容易にする。もしあなたがそれを持っていなければ、私は公開鍵を作成するだけです。 PUBLICをPRIVATE idkに置き換えることができます。

とにかく、ここでいくつかのコードは、(phpseclib 1.0.3を使用しています)です:

<?php 
include('Crypt/RSA.php'); 
include('Math/BigInteger.php'); 

$rsa = new Crypt_RSA(); 
$rsa->loadKey([ 
    'e' => new Math_BigInteger('...'), // base-10 by default 
    'n' => new Math_BigInteger('...') // base-10 by default 
]); 

echo $rsa; 

私は両方のeと15を使用し、n個(実際はRSAの目的のために有効なコンボではなく、デモの目的のために、それは罰金だもの)となりましたこの裏:

-----BEGIN PUBLIC KEY----- 
MBowDQYJKoZIhvcNAQEBBQADCQAwBgIBDwIBDw== 
-----END PUBLIC KEY----- 
+0

お返事ありがとうございました。私は前にこのコードを手に入れました。あなたと同じ考えをしていました。 (http://nmichaels.org/rsa.py) しかし、3つのコンポーネントでrsa enc/decをやっているサイトです。 どういうわけか、16進数のn、e、dコンポーネントから秘密鍵を取得し、データを復号化します。 –

+0

@ MuhammedN.Kartal - BEGIN PUBLIC KEYの名前をBEGIN PRIVATE KEYに変更するだけでいいと言っています。 http://stackoverflow.com/a/21289989/569976では、RSA秘密鍵の形式について説明しています。素数とCRTパラメータはオプションではないことに注意してください。オプションは、2つ以上の素数を持つRSA秘密鍵用のotherPrimeInfosです。 – neubert

+0

秘密鍵の形式については、この議論を読む予定です。どうもありがとう。 –

関連する問題