テキストに対する複雑な操作
-
文字列引数をとる操作では、文字列は 255 文字を超えることはできません。
-
式に文字列を指定するときは、空白を含めることができます。
文字列の長さに対する操作
| 文字カウント操作 | 説明 |
|---|---|
<text>.TRUNCATE(<count>) |
ターゲットの末尾を<count>の文字数で切り捨てた後の文字列を返します。文字列全体が<count>より短い場合、何も返されません。 |
<text>.TRUNCATE(<character>, <count>) |
<count>で指定された文字数だけ<character>の後のテキストを切り捨てた後の文字列を返します。 |
<text>.PREFIX(<character>, <count>) |
<character>の出現回数が最も多い<count>ターゲット内で最も長いプレフィクスを選択します。 |
<text>.SUFFIX(<character>, <count>) |
<character>の出現回数が最も多い<count>ターゲット内で最も長いサフィックスを選択します。たとえば、次のレスポンス本文を考えてみましょう peninsula。次の式は、sula: http.res.body(100).suffix('n',0)の値を返します。次の式が戻ります insula: http.res.body(100).suffix('n',1)。次の式は、peninsula: http.res.body(100).suffix('n',2)の値を返します。次の式は、peninsula: http.res.body(100).suffix('n',3)の値を返します。 |
<text>.SUBSTR(<starting_offset>, <length>) |
ターゲットオブジェクトから<length>文字数を含む文字列を選択します。<starting_offset>の後の文字列の抽出を開始します。オフセットの後の文字数が<length>引数の値より少ない場合は、残りの文字をすべて選択します。 |
<text>.SKIP(<character>, <count>) |
<character>の出現回数が最も多い<count>最長のプレフィックスをスキップした後に、ターゲットから文字列を選択します。 |
文字列の一部に対する操作
2 つの文字列の英数字の順序を比較する操作
-
「abc」と「and」の差は-1です(3番目のペアワイズ文字比較に基づく)。
-
「@」と「abc」の差は-33です。
-
「1」と「abc」の差は-47です。
<text>.COMPARE(<string>)
テキストを表すバイト文字列から整数を抽出する
テキストをハッシュ値に変換する
<text>.HASH
Base64 エンコーディングアルゴリズムを適用してテキストをエンコードおよびデコードする
| 機能 | 説明 |
|---|---|
| text.B64ENCODE | Base64 エンコーディングアルゴリズムを適用して、テキスト文字列 (text で指定) をエンコードします。 |
| text.B64DECODE | Base64 デコードアルゴリズムを適用して、Base64 でエンコードされた文字列 (テキストで指定) をデコードします。テキストが B64 エンコード形式でない場合、この操作は UNDEF を生成します。 |
EXTEND 関数を使用して、書き換えアクションの検索を絞り込みます
-
検索は、パターンまたはパターンセット (正規表現ではない) を使用して実行されます。
-
書き換えアクションは、HTTP パケットの本体のみを評価します。
-
replace_all
-
insert_after_all
-
delete_all
-
insert_before_all
<http://exampleurl.com/>" と"<http://exampleurl.au/>" のすべてのインスタンスを削除できます。これを行うには、文字列 exampleurl のすべてのインスタンスを検索し、一致が見つかったときに文字列の両側で検索範囲を拡張し、正規表現を使用して拡張領域で書き換えを実行する書き換えアクションを設定できます。次の例では、検索の範囲を、一致する文字列の左に 20 バイト、右に 50 バイト拡張します。
add rewrite action delurl_example delete_all 'HTTP.REQ.BODY(1000)' -search exampleurl -refineSearch 'extend(20,50).regex_select(re#http://exampleurl.(com|au)#)'
テキストを 16 進数形式に変換する
<text>.BLOB_TO_HEX(<string>)
テキストの暗号化と復号化
暗号化の構成
GUI を使用した暗号化の設定
暗号化関数と復号化関数を使用する
add rewrite action my-cookie-encrypt-action replace "HTTP.RES.SET_COOKIE.COOKIE("MyCookie").VALUE(0)" "HTTP.RES.SET_COOKIE.COOKIE("MyCookie").VALUE(0).ENCRYPT"
add rewrite action my-cookie-decrypt-action replace "HTTP.REQ.COOKIE.VALUE("MyCookie")" "HTTP.REQ.COOKIE.VALUE("MyCookie").DECRYPT"
サードパーティ暗号化用の暗号化キーを構成する
暗号メソッド
ストリーム暗号
ブロック暗号
パディング
-
PKCS7: n バイトの値を n 個ずつ加算します。たとえば、78797a7a79030303。これは、OpenSSL と ENCRYPT () ポリシー関数で使用されるパディングスキームです。PKCS5 のパディング方式は PKCS7 と同じです。
-
ANSI X.923: n-1 個のゼロバイトと値 n の最後のバイトを加算します。たとえば、78797a7a79000003。
-
ISO 10126: n-1 個のランダムなバイトと値 n の最後のバイトを加算する。たとえば、78797a7a79xxxx03 と指定します。xx には任意のバイト値を指定できます。DECRYPT () ポリシー関数はこのパディングスキームを受け入れ、PKCS7 および ANSI X.923 スキームを受け入れることもできます。
-
ISO/IEC 7816-4:0x80 バイトと n-1 ゼロバイトを追加します。たとえば、78797a7a79800000。これは OneAndZeroS パディングとも呼ばれます。
-
ゼロ:n 個のゼロバイトを追加します。例:78797a7a79000000。これは NUL バイトを含まないプレーンテキストでのみ使用できます。
動作モード
-
電子コードブック (ECB): 平文の各ブロックは個別に暗号化されます。IV は使用されません。プレーンテキストが暗号ブロックサイズの倍数でない場合は、パディングが必要です。同じ平文と鍵は、常に同じ暗号文を生成します。このため、ECB は他のモードよりも安全性が低いと考えられ、レガシーアプリケーションにのみ使用する必要があります。
-
暗号ブロック連鎖(CBC):平文の各ブロックは、暗号化される前に、前の暗号文ブロック、または最初のブロックのIVとXOR化されます。プレーンテキストが暗号ブロックサイズの倍数でない場合は、パディングが必要です。これはNetScalerの暗号化パラメータ方式で使用されるモードです。
-
Cipher Feedback (CFB): 前の暗号文ブロック、または最初のブロックのIVは暗号化され、出力は現在の平文ブロックとXORされ、現在の暗号文ブロックが作成されます。フィードバックは、1 ビット、8 ビット、または 128 ビットです。平文は暗号文とXORされるので、パディングは不要である。
-
出力フィードバック (OFB): キーストリームは、暗号を連続的に IV に適用し、キーストリームブロックを平文で XOR することによって生成されます。パディングは必要ありません。
サードパーティ暗号化用の暗号化キーを構成する
-
暗号化キーを追加する。指定された暗号方式の暗号キーを、指定されたキー値で設定します。
-
暗号化キーの変更。設定済みの暗号化キーのパラメータを編集できます。
-
暗号化キーの設定解除。設定済みの暗号化キーのパラメータをデフォルト値に設定します。名前を持つ EncryptionKey 値が存在する必要があります。パディングを DEFAULT (メソッドで決定) に設定し、既存の IV を削除します。これにより、ENCRYPT () はランダムな IV を生成します。既存のコメントを削除します。メソッドとキー値はリセットできません。
-
暗号化キーを削除する。設定されている暗号化キーを削除します。キーには参照を設定できません。
-
暗号化キーを表示します。設定された暗号化キーまたはすべての設定済みキーのパラメータを表示します。名前を省略すると、キー値は表示されません。
CLI を使用して暗号化キーを追加する
add ns encryptionKey <name> -method <method> [-keyValue <keyvalue>][-padding (OFF | ON)] [-iv <hexstring>] -keyValue <keyvalue> [-comment <string>]
<method> = ( NONE | RC4 | DES3 | AES128 | AES192 | AES256 | DES | DES-CBC | DES-CFB | DES-OFB | DES-ECB | DES3-CBC | DES3-CFB | DES3-OFB | DES3-ECB | AES128-CBC | AES128-CFB | AES128-OFB | AES128-ECB | AES192-CBC | AES192-CFB | AES192-OFB | AES192-ECB | AES256-CBC | AES256-CFB | AES256-OFB | AES256-ECB ) <hexstring> = hex-encoded byte sequence
CLI を使用して暗号化キーを変更する
set ns encryptionKey <name> [-method <method>] [-keyValue <keyvalue>] [-padding ( OFF | ON )] [-iv <string>] [-comment <string>]
CLI を使用して暗号化キーを設定解除する
unset ns encryptionKey <name> [-padding] [-iv] [-comment]
CLI を使用して暗号化キーを削除する
rm ns encryptionKey <name>
CLI を使用して暗号化キーを表示する
show ns encryptionKey [<name>]
add ns encryptionKey my_key -method aes256 -keyValue 26ea5537b7e0746089476e5658f9327c0b10c3b4778c673a5b38cee182874711 –iv c2bf0b2e15c15004d6b14bcdc7e5e365
set ns encryptionKey my_key -keyValue b8742b163abcf62d639837bbee3cef9fb5842d82d00dfe6548831d2bd1d93476
unset ns encryptionKey my_key -iv
rm ns encryptionKey my_key
show ns encryptionKey my_key
Name: my_key
Method: AES256
Padding: DEFAULT
Key Value: (not disclosed)
GUI を使用して暗号化キーを追加する
GUI を使用して暗号化キーを変更する
GUI を使用して暗号化キーを削除する
サードパーティ暗号化用の暗号化および復号化機能
ENCRYPT (encryptionKey, out_encoding)
BASE64: original PEM base64-encoding: 6 bits (0..63) encoded as one ASCII character:
0..23 = 'A'..'Z', 24..51 = 'a'..'z', 52..61 = '0'..'9', 62 = '+', 63 = '/', '=' = pad byte.
BASE64URL: URL and Filename safe base64-encoding: same as BASE64 except 62 = '-', 63 = '_'
HEX_UPPER: Hexadecimal with 0..9 = '0'..'9' and 10..15 = 'A'..'F'.
HEX_LOWER: Hexadecimal with 0..9 = '0'..'9' and 10..15 = 'a'..'f'.
HEX_COLONS: Hexadecimal with 0..9 = '0'..'9' and 10..15 = 'A'..'F'; ':' between each hex byte. Matches BLOB_TO_HEX() output format
HEX: For input, accepts HEX_UPPER, HEX_LOWER, and HEX_COLONS format. For output, produces HEX_LOWER format
DECRYPT(encryptionKey, in_encoding)
バリアントとオプションのパラメータ
| バリアント | 説明 |
|---|---|
| ENCRYPT | encryptionParams コマンドと BASE64 出力エンコーディングパラメータを使用します。 |
| ENCRYPT (out_encoding) | EncryptionParams を使用し、出力エンコーディングパラメータを指定します。 |
| ENCRYPT(encryptionKey) | 指定した encryptionKey および BASE64 出力エンコーディングパラメータを使用します。 |
| ENCRYPT(encryptionKey, out_encoding) | 指定した encryptionKey と出力エンコーディングパラメーターを使用します。 |
| DECRYPT | encryptionParams コマンドと BASE64 入力エンコーディングパラメータを使用します。 |
| DECRYPT (out_encoding) | encryptionParams コマンドと指定された入力エンコーディングパラメータを使用します。 |
| DECRYPT(encryptionKey) | 指定した encryptionKey および BASE64 入力エンコーディングパラメータを使用します。 |
| DECRYPT(encryptionKey, out_encoding) | 指定した encryptionKey と入力エンコーディングパラメータを使用します。 |
HMAC キーの設定
-
HMAC キーの追加。指定されたキー値で HMAC キーを設定します。
-
HMAC キーの変更。設定された HMAC キーのパラメータを変更します。ダイジェストメソッドは、キー値の長さがダイジェストによって決定されないため、キー値を変更することなく変更できます。ただし、ダイジェストを変更するときは、新しいキーを指定することをお勧めします。
-
HMAC キーの設定を解除します。設定された HMAC キーのパラメータをデフォルト値に設定します。という名前の HMAckEy オブジェクトが存在する必要があります。設定解除できるパラメータはコメントのみです。コメントは削除されます。
-
HMAC キーを削除する。設定済みのキーを削除します。キーには参照を設定できません。
-
HMAC キーを表示します。設定された HMAC AC キーまたはすべての設定済みキーのパラメータを表示します。名前を省略すると、キー値は表示されません。
一意でランダムな HMAC キーを構成する
add ns hmacKey <your_key> -digest <digest> -keyValue <keyvalue>
add ns hmacKey <name> -digest sha1 -keyValue AUTO
-
名前の構文は正しく、既存のキーの名前と重複しません。
-
「AUTO」KeyValue を設定コマンドで使用すると、既存の encrytionKey オブジェクトと HMAckEy オブジェクトの新しいキーを生成できます。
add ns hmacKey my_hmac_key -digest sha1 -keyValue 0c753c6c5ef859189cacdf95b506d02c1797407d
CLI を使用した HMAC キーの変更
set ns hmacKey <name> [-digst <digest>] [-keyValue <keyvalue>]
[-comment <string>]
CLI を使用した HMAC キーの設定解除
unset ns hmacKey <name> -comment
CLI を使用して HMAC キーを削除する
rm ns hmacKey <name>
CLI を使用して HMAC キーを表示する
show ns encryptionKey [<name>]
add ns hmacKey my_hmac_key -digest sha1 -keyValue 0c753c6c5ef859189cacdf95b506d02c1797407d
set ns hmacKey my_hmac_key -keyValue f348c594341a840a1f641a1cf24aa24c15eb1317
rm ns hmacKey my_hmac_key
show ns hmacKey my_hmac_key
Name: my_hmac_key
Digest: SHA1
Key Value: (not disclosed)