s2k-digest-algoS2K計算で使用するダイジェストアルゴリズム。s2k-cipher-algo分離したセッションキーの暗号化に使用する暗号。unicode-modeテキストデータをデータベース内部符号化方式からUTF-8に変換して戻すかどうかです。データベースがすでにUTF-8であれば、変換は起こらず、データにUTF-8としてタグが付くのみです。このオプションがないと、何も行われません。新しいキーを生成します。--gen-key推奨するキー種類は"DSAとElgamal"です。--edit-keyを使用してRSAで暗号化された副キーを追加しなければなりませんキーを列挙します。--list-secret-keysASCIIアーマー形式で公開キーをエキスポートします。public.keyASCIIアーマー形式の秘密キーをエキスポートします。secret.keyPGP関数にこれらのキーを渡す前にdearmor()を使用する必要があります。バイナリデータを扱うことができる場合、gpgから-aフラグを省略することができます。Handbook、http://www.gnupg.orgサイトの各種文書を参照してください。署名に関するサポートはありません。これはまた、暗号化副キーがマスタキーに属しているかどうか検査しないことを意味します。マスタキーとして暗号化キーをサポートしません。一般的にこうした状況は現実的ではありませんので、問題にならないはずです。複数の副キーに関するサポートはありません。ありますので、これは問題になりそうに見えます。通常のGPG/PGPキーをpgcryptoで使用すべきではありません。使用する状況が多少異なりますので新しく作成してください。暗号化そのものを行う関数これらの関数はデータ全体を暗号化するためだけに実行します。PGP暗号化の持つ先端的な機能はありません。したがって、大きな問題がいくつか存在します。暗号キーとしてユーザキーをそのまま使用します。暗号化されたデータが変更されたかどうかを確認するための整合性検査をまったく提供しません。ユーザが、IVをも含め暗号化パラメータ自体をすべて管理していることを想定しています。テキストは扱いません。このため、PGP暗号化の導入もあり、暗号化のみの関数はあまり使用されません。byteatypeで指定した暗号方法を使用してデータの暗号化・復号を行います。type文字列の構文は以下の通りです。]ここでalgorithmは以下の1つです。(Rijndael-128)またmodeは以下の1つです。各ブロックは独自に暗号化されます(試験用途のみ)paddingは以下の1つです。データは暗号ブロックサイズの倍数でなければなりませんこのため、例えば以下は同じです。'bf-cbc/pad:pkcs')encrypt_ivおよびdecrypt_ivでは、ivパラメータはCBCモード用の初期値となります。ECBでは無視されます。正確にブロック長でない場合、切り詰められるか、もしくはゼロで埋められます。このパラメータがない場合、関数のデフォルト値はすべてゼロです。bytea暗号論的に強いランダムなcountバイトを返します。一度に最大で1024バイトを抽出することができます。ランダム性ジェネレータプールを空にすることを防止するためのものです。uuidバージョン4(ランダムな)UUIDを返します。構築pgcryptoは自身で主PostgreSQLのconfigureスクリプトの検出結果に従って構築します。構築に影響するオプションは--with-zlibと--with-opensslです。ZLIB付きでコンパイルされた場合、PGP暗号化関数は暗号化前にデータを圧縮することができます。OpenSSL付きでコンパイルされた場合、より多くのアルゴリズムが利用できるようになります。OpenSSLがより最適化されたBIGNUM関数を持つため、公開キー暗号化関数は高速になります。注SHA2はOpenSSLバージョン0.9.8から含まれています。これより古いバージョンでは、pgcryptoは組込みのコードを使用します。OpenSSLがサポートする任意のダイジェストアルゴリズムが自動的に選択されます。これは、明示的にサポートされなければならない暗号では使用できません。AESはOpenSSLバージョン0.9.7から含まれています。これより古いバージョンでは、pgcryptoは組込みのコードを使用します。NULLの扱い標準SQLの通り、引数のいずれかがNULLの場合、すべての関数はNULLを返します。注意せずに使用すると、これがセキュリティ上の問題になるかもしれません。セキュリティ上の制限pgcryptoの関数はすべてデータベースサーバ内部で実行されます。これは、pgcryptoとクライアントアプリケーションとの間でやり取りされるデータはすべて平文であることを意味します。したがって、以下を行う必要があります。ローカルまたはSSL接続で接続システム管理者およびデータベース管理者を信頼これらが不可能であれば、クライアントアプリケーション内で暗号化する方が望まれます。実装はサイドチャネル攻撃に耐えられません。pgcrypto復号関数が完了するのに掛かる時間は、一定の長さの暗号文に対して一様ではありません。<markokr@gmail.com>pgcryptoは以下のソースを使用しています。pg_freespacemap。