decrypt()

decrypt() 関数は指定した暗号アルゴリズムとキーを使用して暗号化されたバイナリデータを復号化してバイナリとして返します。

構文

decrypt(CIPHER, KEY, DATA[, IV])

パラメーター

CIPHER
アルゴリズム/モード/パディング 形式で構成された文字列です。モードとパディングを省略してアルゴリズムのみ入力するとそのアルゴリズムのデフォルト値を適用します。

使用できるアルゴリズム、モード、パディングは Java Security Standard Algorithm Names を参照してください。

Note
以下はすべてのJava実装が必ずサポートしなければならない形式です。DES、DESedeアルゴリズム、ECBモードは安全でないため、外部システムとの互換性の問題などがある場合のみ使用してください。括弧内は暗号化ビット数を示します。
- AES/CBC/NoPadding (128)
- AES/CBC/PKCS5Padding (128)
- AES/ECB/NoPadding (128)
- AES/ECB/PKCS5Padding (128)
- AES/GCM/NoPadding (128)
- DES/CBC/NoPadding (56)
- DES/CBC/PKCS5Padding (56)
- DES/ECB/NoPadding (56)
- DES/ECB/PKCS5Padding (56)
- DESede/CBC/NoPadding (168)
- DESede/CBC/PKCS5Padding (168)
- DESede/ECB/NoPadding (168)
- DESede/ECB/PKCS5Padding (168)
- RSA/ECB/PKCS1Padding (1024, 2048)
- RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)
- RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048)
KEY
指定した暗号アルゴリズムに適合するサイズのバイナリキーです。アルゴリズムごとのキー長は次のとおりです。
  • AES: 16バイト(128ビット)、24バイト(192ビット)、32バイト(256ビット)から選択
  • RSA: 128バイト(1024ビット)、256バイト(2048ビット)から選択
DATA
復号化するバイナリデータです。
IV
CBCなど初期化ベクター(IV、Initialization Vector)が必要な動作モードを使用するときに指定するバイナリ値です。

説明

decrypt() 関数はJavaのCipherクラスを使用して指定した暗号アルゴリズムとキーでバイナリデータを復号化してバイナリを返します。

KEY または DATAnull であるかバイナリ型でない場合は null を返します。IV が指定されている場合は IV もバイナリ型でなければならず、そうでなければ null を返します。復号化中にエラーが発生すると null を返します。

Caution
ログプレッソは互換性のためJavaが提供する多様な暗号アルゴリズムをサポートしています。ただし、DES系やECBモードのような安全でない暗号アルゴリズムやモードは使用しないことをお勧めします。

エラーコード

エラーコード説明
90650パラメーターが3個未満の場合
90651無効な暗号アルゴリズムを指定した場合

使用例

  1. AESアルゴリズムで暗号化されたデータを復号化

    json "{}"
    | eval key = frombase64("mRcOlK9V47rjVL/RBYQYRw=="),
           encrypted = frombase64("y7+NQQ9/9xGtbBq5pgBvCA=="),
           decrypted = decode(decrypt("AES", key, encrypted))
    | # decrypted: hello, world!
    
  2. CBCモードでIVを指定して復号化

    json "{}"
    | eval key = frombase64("mRcOlK9V47rjVL/RBYQYRw=="),
           iv = frombase64("AAAAAAAAAAAAAAAAAAAAAA=="),
           encrypted = frombase64("..."),
           decrypted = decrypt("AES/CBC/PKCS5Padding", key, encrypted, iv)
    
  3. KEY または DATAnull の場合

    json "{}" | eval result = decrypt("AES", null, binary("data"))
    | # result: null
    

互換性

decrypt() 関数はSonar 4.0以前のバージョンから提供されています。