encrypt()

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

構文

encrypt(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)が必要な動作モードを使用する場合に指定するバイナリ値です。

説明

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

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

Caution
Logpresso は互換性のために、Java が提供するさまざまな暗号アルゴリズムをサポートしています。ただし、DES 系列や ECB モードのような安全でない暗号アルゴリズムやモードは使用しないことを推奨します。

エラーコード

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

使用例

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

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

    json "{}"
    | eval key = frombase64("mRcOlK9V47rjVL/RBYQYRw=="),
           iv = randbytes(16),
           data = encode("hello, world!"),
           encrypted = encrypt("AES/CBC/PKCS5Padding", key, data, iv)
    
  3. KEY または DATAnull の場合

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

互換性

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