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

## クラス HybsCryptography

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

-     public final class HybsCryptography
      extends Object

  HybsCryptography は、セキュリティ強化の為の Hybs独自の暗号化クラスです。 このクラスは、暗号化キーを受け取り、それに基づいて暗号化/復号化を行います。 ここでの暗号化は、秘密キー方式でバイト文字列に変換されたものを、１６進アスキー文字に 直して、扱っています。よって、暗号化/復号化共に、文字列として扱うことが可能です。
  変更履歴:
    4.0.0.0 (2005/08/31) 新規追加, 5.9.10.0 (2019/03/01) クラウドストレージ対応を追加。(Fileクラスを拡張)
  機能分類
    ライセンス管理
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

- - ### コンストラクタの概要

    コンストラクタ
    コンストラクタ | 説明
    --- | ---
    `HybsCryptography()` | 内部設定の秘密鍵を使用して，暗号化を行うオブジェクトを構築します。
    `HybsCryptography​(String cryptKey)` | 秘密鍵の文字列を受け取って，暗号化を行うオブジェクトを構築します。

  - ### メソッドの概要

    すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `static String` | `byte2hexa​(byte[] input)` | バイト配列を１６進数アスキー文字列に変換します。
    `String` | `decrypt​(String hex)` | セキュリティカラムのDBTyepに対してHybs独自の復号化を行います。
    `String` | `encrypt​(String org)` | セキュリティカラムのDBTyepに対してHybs独自の暗号化を行います。
    `static String` | `getMD5​(File input)` | MessageDigestにより、MD5 でハッシュした文字に変換します。
    `static String` | `getMD5​(String input)` | MessageDigestにより、MD5 でハッシュした文字に変換します。
    `static String` | `getMD5​(FileOperation input)` | MessageDigestにより、MD5 でハッシュした文字に変換します。
    `static String` | `getSHA1​(String input)` | MessageDigestにより、SHA1 でハッシュした文字に変換します。
    `static String` | `getSHA512​(String input)` | MessageDigestにより、SHA-512 でハッシュした文字に変換します。
    `static byte[]` | `hexa2byte​(String input)` | １６進数アスキー文字列をバイト配列に変換します。
    `static void` | `main​(String[] args)` | 暗号化のテストを行う為のメインメソッド java HybsCryptography KEY TEXT で起動します。

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

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

- - ### コンストラクタの詳細

    - #### HybsCryptography

          public HybsCryptography()

      内部設定の秘密鍵を使用して，暗号化を行うオブジェクトを構築します。 ここでの暗号化は、Java標準のセキュリティパッケージを使用しています。
      変更履歴:
        6.2.5.0 (2015/06/05) 引数付コンストラクタを使用

    - #### HybsCryptography

          public HybsCryptography​(String cryptKey)

      秘密鍵の文字列を受け取って，暗号化を行うオブジェクトを構築します。 ここでの暗号化は、Java標準のセキュリティパッケージを使用しています。 秘密鍵のサイズを、8 の倍数 (32 以上 448 以下) にする必要があります。
      パラメータ:
        `cryptKey` - 暗号化を行う秘密鍵
      変更履歴:
        5.8.8.0 (2015/06/05) null時の挙動はデフォルトキーを利用する

  - ### メソッドの詳細

    - #### encrypt

          public String encrypt​(String org)

      セキュリティカラムのDBTyepに対してHybs独自の暗号化を行います。 暗号化されたデータは、通常 byte 文字ですが、１６進数アスキー文字列に変換 したものを返します。 この暗号化では、引数が null の場合は、ゼロ文字列を返します。
      パラメータ:
        `org` - 暗号化を行う元の文字列
      戻り値:
        暗号化された文字列(HEXADECIMAL化)
      変更履歴:
        5.7.2.1 (2014/01/17) Exceptionをまとめます。
      このメソッドは、nullを返しません

    - #### decrypt

          public String decrypt​(String hex)

      セキュリティカラムのDBTyepに対してHybs独自の復号化を行います。 ここでの復号化は、encrypt で暗号化された文字を戻す場合に使用します。 この復号化では、null は復号化できないため、ゼロ文字列を返します。
      パラメータ:
        `hex` - 復号化を行う暗号化された１６進数アスキー文字列
      戻り値:
        復号化された元の文字列
      変更履歴:
        5.7.2.1 (2014/01/17) Exceptionをまとめます。
      このメソッドは、nullを返しません

    - #### byte2hexa

          public static String byte2hexa​(byte[] input)

      バイト配列を１６進数アスキー文字列に変換します。 バイト配列を、２文字の0～9,a～ｆのアスキーに変換されます。 これにより、すべての文字を、アスキー化できます。 アスキー化で、上位が0F以下の場合でも、0 を出すことで、固定長に変換します。 よって、入力バイトの２倍のlength()を持ったStringを作成します。
      パラメータ:
        `input` - バイト配列
      戻り値:
        １６進数アスキー文字列

    - #### hexa2byte

          public static byte[] hexa2byte​(String input)

      １６進数アスキー文字列をバイト配列に変換します。 ２文字の0～9,a～ｆのアスキー文字列を、バイト配列に変換されます。 よって、入力Stringの１/２倍のlengthを持ったバイト配列を作成します。
      パラメータ:
        `input` - １６進数アスキー文字列
      戻り値:
        バイト配列

    - #### getMD5

          public static String getMD5​(String input)

      MessageDigestにより、MD5 でハッシュした文字に変換します。 MD5で、１６Byteのバイトに変換されますが、ここでは、１６進数で文字列に変換しています。 変換方法は、各バイトの上位/下位を１６進文字列に変換後、連結しています。 これは、Tomcat等の digest 認証(MD5使用時)と同じ変換方式です。 連結後の文字列長は、３２バイト(固定)になります。
      パラメータ:
        `input` - 変換前の文字列
      戻り値:
        MD5でハッシュした文字列。３２バイト(固定)
      変更履歴:
        5.2.2.0 (2010/11/01) util.StringUtil から移動

    - #### getMD5

          public static String getMD5​(FileOperation input)

      MessageDigestにより、MD5 でハッシュした文字に変換します。 MD5で、１６Byteのバイトに変換されますが、ここでは、１６進数で文字列に変換しています。 変換方法は、各バイトの上位/下位を１６進文字列に変換後、連結しています。 これは、Tomcat等の digest 認証(MD5使用時)と同じ変換方式です。 連結後の文字列長は、３２バイト(固定)になります。 下記サイトを参考に作成しています。 https://stackoverflow.com/questions/304268/getting-a-files-md5-checksum-in-java
      パラメータ:
        `input` - 変換前のFileOperationオブジェクト
      戻り値:
        MD5でハッシュした文字列。３２バイト(固定)
      変更履歴:
        5.9.10.0 (2019/03/01) 新規追加。クラウドストレージ対応。

    - #### getMD5

          public static String getMD5​(File input)

      MessageDigestにより、MD5 でハッシュした文字に変換します。 MD5で、１６Byteのバイトに変換されますが、ここでは、１６進数で文字列に変換しています。 変換方法は、各バイトの上位/下位を１６進文字列に変換後、連結しています。 これは、Tomcat等の digest 認証(MD5使用時)と同じ変換方式です。 連結後の文字列長は、３２バイト(固定)になります。
      パラメータ:
        `input` - 変換前のFile
      戻り値:
        MD5でハッシュした文字列。３２バイト(固定)
      変更履歴:
        5.7.2.1 (2014/01/17) Exceptionをまとめます。, 5.9.10.0 (2019/03/01) クラウドストレージ対応を追加

    - #### getSHA1

          public static String getSHA1​(String input)

      MessageDigestにより、SHA1 でハッシュした文字に変換します。 １６進数で文字列に変換しています。 変換方法は、各バイトの上位/下位を１６進文字列に変換後、連結しています。 これは、Tomcat等の digest 認証と同じ変換方式です。
      パラメータ:
        `input` - 変換前の文字列
      戻り値:
        SHA1でハッシュした文字列。３２バイト(固定)
      変更履歴:
        5.9.27.1 (2010/12/08) 新規作成

    - #### getSHA512

          public static String getSHA512​(String input)

      MessageDigestにより、SHA-512 でハッシュした文字に変換します。 １６進数で文字列に変換しています。 変換方法は、各バイトの上位/下位を１６進文字列に変換後、連結しています。 これは、Tomcat等の digest 認証と同じ変換方式です。
      パラメータ:
        `input` - 変換前の文字列
      戻り値:
        SHA-512でハッシュした文字列 128バイト
      変更履歴:
        5.10.10.2 (2019/04/12) 新規作成

    - #### main

          public static void main​(String[] args)

      暗号化のテストを行う為のメインメソッド java HybsCryptography KEY TEXT で起動します。 KEY : 秘密鍵(8 の倍数 (32 以上 448 以下)文字) TEXT : 変換する文字列
      パラメータ:
        `args` - 引数配列
      変更履歴:
        5.2.2.0 (2010/11/01) 循環参照の解消(LogWriter 削除)