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)
- 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 または DATA が null であるかバイナリ型でない場合は null を返します。IV が指定されている場合は IV もバイナリ型でなければならず、そうでなければ null を返します。復号化中にエラーが発生すると null を返します。
Caution
ログプレッソは互換性のためJavaが提供する多様な暗号アルゴリズムをサポートしています。ただし、DES系やECBモードのような安全でない暗号アルゴリズムやモードは使用しないことをお勧めします。
エラーコード
| エラーコード | 説明 |
|---|---|
| 90650 | パラメーターが3個未満の場合 |
| 90651 | 無効な暗号アルゴリズムを指定した場合 |
使用例
-
AESアルゴリズムで暗号化されたデータを復号化
json "{}" | eval key = frombase64("mRcOlK9V47rjVL/RBYQYRw=="), encrypted = frombase64("y7+NQQ9/9xGtbBq5pgBvCA=="), decrypted = decode(decrypt("AES", key, encrypted)) | # decrypted: hello, world! -
CBCモードでIVを指定して復号化
json "{}" | eval key = frombase64("mRcOlK9V47rjVL/RBYQYRw=="), iv = frombase64("AAAAAAAAAAAAAAAAAAAAAA=="), encrypted = frombase64("..."), decrypted = decrypt("AES/CBC/PKCS5Padding", key, encrypted, iv) -
KEYまたはDATAがnullの場合json "{}" | eval result = decrypt("AES", null, binary("data")) | # result: null
互換性
decrypt() 関数はSonar 4.0以前のバージョンから提供されています。