2016-05-09 11 views
0

GnuPGで暗号化するときに特殊文字を削除する方法はありますか?私は以下の問題を持っています。 GPGでテキストを暗号化すると、+のような特殊文字が含まれています。GnuPG暗号化の特殊文字を削除する

encryptコマンド

--encrypt --armor --recipient 

だから、この暗号化されたテキストは、クエリ文字列とするとき解読しようと経由して渡されたとき。私は以下のエラーが発生しています。

エラーので

gpg: no valid OpenPGP data found.gpg: decrypt_message failed: Unknown system error 

GPGは、いくつかの特殊文字を含まないように設定する方法はありますか?

+0

GnuPGに仕事(暗号化)をさせ、URLにエスケープ文字を配置するとどうなりますか(その起源に関係なく) –

+0

あなたはこのように使うと言っていましたか? '\ +' '\\ r'' \\ n' –

+0

いいえ、私は['WebUtility.UrlEncode'](https://msdn.microsoft.com/en-us/library/system.net)のようなものを使用しています。 webutility.urlencode(v = vs.110).aspx)など。すでによく書かれ、テストされているコードを再発明するのが好きでない限り。 –

答えて

0

いいえ、ありません。 OpenPGPは2つのエンコーディング、つまりあなたが使用するASCIIアーマーリングとバイナリフォーマットを指定します。

ASCIIエンベロープはもともとメールを転送するために開発されたもので、それ以上のエンコードを行わずに基本的な7ビットASCII文字しか使用できません。

URLエンコーディングには、追加の制限またはエンコーディングが必要です。データを変更できない場合(そしてGnuPG/OpenPGPではできない場合)は、選択した転送プロトコルによって強制される別のエンコーディングを追加する必要があります。

幸い、C#にはURL encoding and decoding methodsが組み込まれています。送信サイズが重要な場合は、バイナリデータをURLエンコードしてみることを提案します。これにより、データのかなりの部分が節約される可能性があります。小さな暗号化されたメッセージを送信することはほとんどありませんが、ASCII装甲文字列データの処理は一般的にバイナリ情報の交換よりも堅牢であるため、ASCII装甲メッセージをエンコードしたURLにとどまります。

関連する問題