パッケージ org.opengion.fukurou.security

## クラス URLHashMap

- java.lang.Object
- - org.opengion.fukurou.security.URLHashMap

-     public final class URLHashMap
      extends java.lang.Object

  URLHashMap は、セキュリティ強化の為の Hybs独自の暗号化クラスです。 このクラスは、暗号化キーを受け取り、それに基づいて暗号化/復号化を行います。 ここでの暗号化は、秘密キー方式でバイト文字列に変換されたものを、１６進アスキー文字に 直して、扱っています。よって、暗号化/復号化共に、文字列として扱うことが可能です。
  機能分類
    ライセンス管理
  変更履歴:
    5.2.2.0 (2010/11/01) 新規追加, 6.4.3.3 (2016/03/04) キャッシュを、世代交代のWeakHashMapから、LinkedHashMap(固定容量) に変更します。
  バージョン
    5.2.2.0 (2010/11/01)
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK1.6,

- - ### メソッドの概要

    すべてのメソッド staticメソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `static java.lang.String` | `getValue​(java.lang.String key)` | 指定のキーに対応した設定値を取り出します。
    `static java.lang.String` | `makeEncrypt​(java.lang.String val)` | 引数の設定値を暗号化したときの値を作成します。
    `static java.lang.String` | `makeHashKey​(java.lang.String val)` | 引数の設定値をハッシュ化したときの値(＝ハッシュキー)を作成します。
    `static java.lang.String` | `makeUrlChange​(java.lang.String url, java.lang.String hkey, boolean extOnly)` | URL をハッシュ化/暗号化して返します。

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### メソッドの詳細

    - #### makeUrlChange

          public static java.lang.String makeUrlChange​(java.lang.String url,
                                                       java.lang.String hkey,
                                                       boolean extOnly)

      URL をハッシュ化/暗号化して返します。 共通処理を簡易化するための、便利メソッドです。 ここでのハッシュ化/暗号化は、URLのパラメータ(?以降の部分)のみ行います。 また、ここで渡す文字列は、URLを含む文字列なので、href のキーワードを 手がかりに、? を探して、その部分のみ、変換します。 href を含まない場合は、それ自体が URL と判断して、? を探します。 ? が存在しないケースは、url をそのまま返します。 URLのアドレスが、"/" から始まる場合は、自身のアドレスと判断し、ハッシュ処理を行います。 そうでない場合(http:// や ../ の場合)は、暗号化処理を行います。 第２引数は、ハッシュ化/暗号化されたパラメータを指定するキーになります。(標準は、h_r) 処理を選択します。 href を含まず、'?' だけを含む場合は、'?' 以降を暗号化します。 ハッシュの場合、このキーを元に、設定値を内部キャッシュ(Map)に設定します。 Map は、３世代持っており、内部キャッシュ(SIZE=6000)を超えると、２世代目に移行し、 さらに、超えると、３世代目に移行します。３世代目は、WeakHashMap を利用している ため、場合によってはデータがなくなり、アクセス不能になっている可能性があります。
      パラメータ:
        `url` - オリジナルのURL、または、URLを含む文字列
        `hkey` - パラメータのキーとして使用する文字
        `extOnly` - 外部URL対応 [true:外部URLの場合のみ処理を実行/false:全実行]
      戻り値:
        変換されたURL を含む文字列

    - #### makeHashKey

          public static java.lang.String makeHashKey​(java.lang.String val)

      引数の設定値をハッシュ化したときの値(＝ハッシュキー)を作成します。 内部的に、このハッシュキーを元に、設定値を内部キャッシュ(Map)に設定します。
      パラメータ:
        `val` - オリジナルの設定値
      戻り値:
        ハッシュキー
      変更履歴:
        6.4.3.1 (2016/02/12) PMD refactoring. HashMap → ConcurrentHashMap に置き換え。, 6.4.3.3 (2016/03/04) キャッシュを、世代交代のWeakHashMapから、LinkedHashMap(固定容量) に変更します。
      このメソッドは、nullを返しません

    - #### makeEncrypt

          public static java.lang.String makeEncrypt​(java.lang.String val)

      引数の設定値を暗号化したときの値を作成します。 暗号化なので、ハッシュ化の時の用に、内部キャッシュ(Map)に設定しません。 処理時間等を考慮すると、外部URLの暗号化や、長期にわたるURL(一旦、システムの 外部にURLを渡す：例えば、メールでリンク先を送信するなど)の作成に使用します。
      パラメータ:
        `val` - オリジナルの設定値
      戻り値:
        暗号化キー
      このメソッドは、nullを返しません

    - #### getValue

          public static java.lang.String getValue​(java.lang.String key)

      指定のキーに対応した設定値を取り出します。 ここでは、ハッシュ化 または 暗号化されているキーに対して、 ハッシュキーであれば、関連付けられた設定値を取り出し、暗号化キーで あれば、復号化処理を行います。
      パラメータ:
        `key` - ハッシュ化/暗号化されたキー
      戻り値:
        オリジナルの設定値
      変更履歴:
        6.4.1.1 (2016/01/16) URLMAP2 を、static finalにするため、代入せずに、clear() + putAll(Map) で処理します。, 6.4.3.1 (2016/02/12) PMD refactoring. HashMap → ConcurrentHashMap に置き換え。, 6.4.3.3 (2016/03/04) キャッシュを、世代交代のWeakHashMapから、LinkedHashMap(固定容量) に変更します。