2019年7月26日金曜日

カード番号のフォーマットを変換する方法


正規表現を使用してカード番号の一部を抽出し、番号をあるフォーマットから別のフォーマットへ変換するのは一般的によくある要件です。
例えば、カード番号はソース(例:Active Directoryなど)に10進数形式で格納されているにもかかわらず、
カード・リーダでは16進数形式でカード番号を返す場合などがあります。
PaperCutにはカード番号のフォーマットを変換するためのビルトインのコンバータが含まれます。

注記: 多くのカード・リーダで設定可能です。
    番号のフォーマットは設定ツールやユーティリティ経由でハードウェア・レベルの変更が可能です。
    PaperCutのソフトウェア・レベルのコンバータは、
    ハードウェア・レベルのコンフィギュレーションが提供されていないカード・リーダをサポートします。
    またグローバルなソフトウェア・レベルの変換の方がよい場合があります。
    例えば、100台以上のリーダを手動で再プログラミングするよりも、PaperCutの変換を使用するほうが早い場合などがあります。

正規表現と同じく、コンバータはPaperCut管理者Webインタフェースからグローバル・ベース(すべてのデバイスに適用)、
もしくはデバイス毎に定義することができます。


● グローバル・ベースで設定する場合

1. PaperCut 管理者用Webインタフェースへログインします。

2. <オプション>タブのアクション欄から「設定エディタ(応用)」を選択します。
















3. クイック検索で「ext-device.card-no-converter」と検索します。














4. 使用するコンバータを入力し、「更新」ボタンをクリックします。
  ※利用できるコンバータにつきましては、後述の「標準コンバータ」をご覧ください。




















● デバイス・ベースで設定する場合

1. PaperCut 管理者用Webインタフェースへログインします。

2. <デバイス>タブ - 「外部デバイス・リスト」から該当のデバイスを選択し、「デバイスの詳細」画面 - <設定エディタ(応用)>タブを選択します。




















3. クイック検索で「ext-device.card-no-converter」と検索します。















4. 使用するコンバータを入力し、「更新」ボタンをクリックします。
  ※利用できるコンバータにつきましては、後述の「標準コンバータ」をご覧ください。


























● 標準コンバータ

利用できるコンバータは以下の通りです。

【hex2dec】
 16進数のエンコード化されたカード番号を10進数の形式へ変換します。
 16進数の番号には「0-9」と「A-F」が含まれます。
 「946EBD28」は「2490285352」に変換されます。

【dec2hex】
 10進数のカード番号を16進数形式に変換します。
 「2490285352」は「946EBD28」に変換されます。

【ascii-enc】 
 ASCIIエンコード化されたカード番号の文字列を解凍します。
 例えば、番号「3934364542443238」の場合、ASCIIコードは「39」→「9」、「34」→「4」、
 「45」→「E」に変換されます。番号全体は「946EBD28」となります。

【javascript:<path>】 
 JavaScriptでカスタム変換関数を定義することができます。(詳細は弊社までお問い合わせください。)


連続して、もしくはパイプ(|)で区切ったパイプラインのコンバータの利用が可能です。
例えば、「ascii-enc | hex2dec」の場合、最初にエンコード化されたASCII番号を解凍し、その後10進数に変換します。

ヒント: どのコンバータを使用すればよいかわからない場合、すべてのコンバータを試してみてください。
     カードをかざすと、PaperCut管理者用Webインタフェースの<ログ>タブ - <アプリケーション・ログ>タブのメッセージに
     変換が適用された後の数値が表示されます。(システムはカードを推測することはできません。)
     各種コンバータを試し、<アプリケーション・ログ>タブから結果の番号を確認してください。





0 件のコメント :

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。