問題タブ [pgp-desktop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1301 参照

java - Linux で実行されている Java アプリから PGP 互換のファイル暗号化を使用するための推奨ソリューションは?

特に、PGP Desktop と互換性のある方法でメッセージとファイルを暗号化/復号化/署名する必要がある既存のアプリケーションを置き換える必要があります。

新しいアプリケーションは Java (JDK 1.6) で書かれており、Linux で動作します。

利用可能なものを調査した後、BouncyCastle がサポートしていることがわかりますOpenPGP。それ以外の場合、JCE には PGP 互換のインストールが付属していません。

外部プロセスとして PGP から公式のコマンド ライン クライアントを呼び出すことは、できるだけ避けたいことです (そして数千ドルの費用がかかります)。

他のオプションはありますか、それともこれですか?

ありがとう。

0 投票する
2 に答える
3854 参照

ios - iOSでのPGP復号化

iPadでPGPファイルの復号化を実装しようとしています。テスト用の.txtファイルをいくつか設定し、PGPデスクトップを介して暗号化しました。

SecPKCS12Importを使用して、ドキュメントの暗号化に使用される証明書の秘密鍵をインポートし、次に、結果のSecIdentityRefからSecIdentityCopyPrivateKey()をインポートしました。

証明書の公開鍵と秘密鍵を使用して、Objective Cで単純な文字列の暗号化と復号化をテストすると、完全に機能します。

実際のPGP復号化を試しているので、少し困惑しています... .pgpファイルからテキストを読み取ると、次のようになります。

ファイル内のデータから、PGPがファイルの暗号化に使用したランダムなワンタイムキーを取得する必要があることを知っています。そのためには、秘密鍵でSecKeyDecryptを使用して、1回限りのAES鍵を取得する必要があることを知っています。そのキーを取得したら、残りのデータを復号化できます。

私が問題を抱えているのは、データのどの部分をSecKeyDecryptにフィードするかです。PGPファイルの設定はどのようになっていますか?最初の128文字はAESキーですか?私の理解が間違っていない限り、私はそれをデータとは別に取り出す必要があります。

たとえば、最初の128文字をSecKeyDecrypt関数を介してvoidとして実行すると、(BEGIN PGP MESSAGE行を削除した後)

私はこれを手に入れます:

MRªh6∞bJ˘e£t*˝ã=ŒA¢Òt'ŸY±éÿAÃîâGÎfi≠$b≈tâç`yxk=uHªqu-、–dïn^™È\›5±tb。‡€Kñ⁄≤sΩw–ïʃkafS ˘À*Æô竡rAyv)?] wOrµKz ^ªq“à∑öΓı* r <+ l˝Äo∑› g≠¶/÷eÔ&€PÒRåêM¶Ñ| Q $á6În^võ¬∏・h(ƒß• R≤(flò(*•Aa

これがどのエンコーディングであるかはわかりませんが、outputBufから文字列に取得しようとしても100%機能することはありません。どのエンコーディングを渡しても変更されるようです。最初にNSDataに渡すと、元の文字列を取り戻すことができます。

次に、そのキーをAES256DecryptWithKeyクラスに渡して、最初の128文字の後にPGPファイルの残りのデータを提供しようとします。

問題:

結果のデータ「plain」は<>、つまり空として出力されます。私の問題は、PGPファイルからキーを取得する方法さえ知らないと思うことです。

誰かが私にPGPファイルの設定を説明できますか?実際にデータから完全に分離されている場合、「キー」はどの部分ですか?いつも同じ長さ/同じ位置ですか?それが分離していない場合、私はそれをどのようにつかむことができるのかまったくわかりません。残りはうまくいくと思います。エラーやクラッシュが発生していません。AES復号化に渡す正しいキーやデータではありません。おそらく文字列エンコーディングエラーの組み合わせであり、AESキーと正しい組み合わせの適切な量を取得していない可能性があります。 。

ノート -

3つの異なるテキストファイルを作成し、それらをPGPプロセスで実行しました。それらを調べると、それらはすべて同じ24文字(qANQR1DBwEwDraQm2Kxa5GkB)で始まりました。これらの24を復号化に渡しても機能せず、使用するAESキーPGPがドキュメントごとに異なるという印象を受けました。私はそれを間違えましたか?

正しい方向への一歩をありがとう!

追加するために編集:

部分的に私の間違いに気づきました-128のAESは16ビットを必要とするので、どちらにしても128文字を使用して間違った量を取っています、愚かな間違い、私はこれをあまりにも長い間見ていたと思います...それを交換してしませんでした仕事。私が行う復号化は、'⁄Ĉ¢ï¡0M¶È2Cˆ¿©gUú¨6iîΩ`&<%Jœv£¯nRb∆:(–%'タイプの結果になります。これは、私が何か間違ったことをしたことを意味します。エンコーディングでさらに何かをする必要があります。