Crypto++ を使用して公開/秘密キーのペアを生成し、クライアント側で Crypto++ (RSAES_OAEP_SHA_Encryptor) を使用してパスワードをエンコードしてから、base64 でエンコードします。ここで、サーバー側の PHP スクリプト (phpseclib 経由) でデコードしたいと思います。秘密鍵の形式は「MIIEuwIBADANBgkqhkiG9w0BAQ ....」(改行なし)であり、次のように形式設定します。
static $BEGIN_MARKER = "-----BEGIN RSA PRIVATE KEY-----";
static $END_MARKER = "-----END RSA PRIVATE KEY-----";
$pem = $BEGIN_MARKER . "\n";
$pem .= chunk_split($key, 64, "\n");
$pem .= $END_MARKER . "\n";
ロードする前に:
$rsa->loadKey($pem,CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
これはうまくいくようです。ただし、次の方法でメッセージをデコードします。
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_OAEP);
$plaintext = $rsa->decrypt(base64_decode($input));
空の文字列のみを生成します。エラーは表示されません。
問題なくメッセージをデコードできる同様のASP.Net C#ハンドラーがあります...
何か案は ?