2

私は暗号化が初めてで、Linux gpg コマンドと Oracle の dbms_crypto パッケージが連携できるかどうかを調べようとしています。Oracle のバージョンは 11R2 です。別のシステムで暗号化されたファイルを受け取り、可能であれば PL/SQL を介して復号化したいと考えています。これが可能かどうかを確認するために、POC として以下のスレッドを実行しています。

Linux プロンプトで、次のコマンドでキーを作成しました。

gpg --gen-key

このコマンドで公開鍵を作成しました (実際のメールアドレスを使用):

gpg --armor --export xxx@yyy.com > mypublickey

そして、私のファイルを次のように暗号化しました:

gpg -r xxx@yyy.com --output input.txt.encrypted --encrypt input.txt

stdout の中には、次のメッセージがありました。

gpg: encrypted with 2048-bit RSA key

これで、暗号化されたファイルができました。

blob/clobs を使用して、暗号化されたファイルと公開鍵を Oracle テーブルにロードしました。dbms_crypto.decrypt 関数を使用してファイルを復号化しようとしています。

select dbms_crypto.decrypt(
          encrypted_file,
          ?,
          utl_raw.cast_to_raw('public_key'),
          null)
from crypto_test_lobs

この時点で、「使用するストリームまたはブロック暗号のタイプと修飾子」である 2 番目の引数に渡す値がわかりません。おそらく投稿する価値のないさまざまな例外が発生するいくつかの異なる組み合わせを試しました。

だから私の質問は:

  1. これは可能ですか?
  2. その2番目の引数をどのように把握しますか?

ありがとう

4

3 に答える 3

0

最初の質問に対する短い答え: いいえ、大きな答えです。Oracle 関数は対称暗号のみを使用しているようですが、作成したキー (RSA) は非対称暗号で使用するためのものですが、これは機能しません。私のお勧めは、DES と AES のアルゴリズムと、それらがどのように機能するかを見て、その理由をよりよく理解することです。

于 2012-11-26T20:25:33.453 に答える
0

How do I figure out that 2nd argument?

2 番目の引数は、使用するアルゴリズムを定義する整数です。http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_crypto.htmも参照してください。PL/SQL 内では、DBMS_CRYPTO パッケージの定数を使用してこれらの値を設定できます。たとえば、CBC および PKCS5 パディングで AES-256 を使用するには、次のようなものを使用します。

encryption_type PLS_INTEGER := DBMS_CRYPTO.ENCRYPT_AES256
                             + DBMS_CRYPTO.CHAIN_CBC
                             + DBMS_CRYPTO.PAD_PKCS5;

PL/SQL 以外では、定数が定義する実際の数値を知る必要があります。対応するリストについては、http://www.remote-dba.net/t_advanced_dbms_crypto.htmを参照してください。上記と同じアルゴリズムを定義するには、8 + 256 + 4096 を使用します。

于 2012-11-26T20:18:23.890 に答える