public class HashCrypt
extends java.lang.Object
ハッシュ化は片方向の暗号化の機能があり、パスワードの認証等に用いられている。
また、ファイルの改ざんや破壊の検知のためにも利用されている。
最初の文字列のハッシュ化を特定回数繰り返すとそのハッシュ値はいつも同じ値になる。
この特徴を利用して、総当たり攻撃の対策をするために、ハッシュ化を繰り返せるようにしている。
ハッシュアルゴリズムは以下の何れかを利用できる。
MD2, MD5, SHA-1, SHA-256, SHA-384, SHA-512
修飾子とタイプ | フィールドと説明 |
---|---|
protected java.lang.String |
defaultAlgorithmName
ハッシュアルゴリズムのデフォルト値。
|
protected static int |
MAX_HASH_REPEAT
ハッシュを繰り返すことで総当たり攻撃の対策をする。
|
protected int |
repeatCount
ハッシュ化を繰り返す回数のデフォルト値
|
コンストラクタと説明 |
---|
HashCrypt() |
修飾子とタイプ | メソッドと説明 |
---|---|
boolean |
certificate(java.lang.String hashAlgorithmName,
int loginHashCount,
java.lang.String loginPassword,
int registHashCount,
java.lang.String registPassword)
2つのハッシュ化されたパスワードの照合(認証)を行う。
|
java.lang.String |
getDefaultAlgorithmName()
デフォルトハッシュアルゴリズム名を取得する。
|
int |
getRepeatCount()
デフォルトのハッシュ化繰り返し回数を取得する。
|
static void |
main(java.lang.String[] args)
文字列を指定回数分、文字列として繰り返したハッシュの文字列を出力する。
|
void |
setDefaultAlgorithmName(java.lang.String defaultAlgorithmName)
デフォルトハッシュアルゴリズム名を設定する。
|
void |
setRepeatCount(int repeatCount)
デフォルトのハッシュ化繰り返し回数を設定する。
|
protected java.lang.String |
toBase64String(byte[] value)
Base64に変換する。
|
java.lang.String |
toEncryptedHashBase64Value(java.lang.String algorithmName,
java.lang.String text)
ハッシュ化したものをBase64にして返す。
|
java.lang.String |
toEncryptedHashValue(java.lang.String value)
デフォルトの繰り返し回数とハッシュアルゴリズムでハッシュ化を行う。
|
byte[] |
toEncryptedHashValue(java.lang.String algorithmName,
byte[] value)
バイナリのハッシュ化を行う。
|
byte[] |
toEncryptedHashValue(java.lang.String algorithmName,
byte[] value,
int repeatCount)
バイナリのハッシュ化を行う。
|
java.lang.String |
toEncryptedHashValue(java.lang.String algorithmName,
java.lang.String value)
文字列のハッシュ化を行う。
|
java.lang.String |
toEncryptedHashValue(java.lang.String algorithmName,
java.lang.String value,
int repeatCount)
文字列のハッシュ化を行う。
|
java.lang.String |
toHexString(byte[] value)
16進数文字列形式に変換する。
|
protected static final int MAX_HASH_REPEAT
protected java.lang.String defaultAlgorithmName
protected int repeatCount
public boolean certificate(java.lang.String hashAlgorithmName, int loginHashCount, java.lang.String loginPassword, int registHashCount, java.lang.String registPassword)
hashAlgorithmName
- ハッシュアルゴリズム名loginHashCount
- ログイン時のハッシュ化回数loginPassword
- ログイン時のパスワードregistHashCount
- 登録されているパスワードのハッシュ化回数registPassword
- 登録されているパスワードpublic java.lang.String toEncryptedHashValue(java.lang.String value)
value
- ハッシュ化前の文字列public java.lang.String toEncryptedHashValue(java.lang.String algorithmName, java.lang.String value, int repeatCount)
algorithmName
- ハッシュアルゴリズム名value
- ハッシュ化前の文字列repeatCount
- ハッシュ化繰り返し回数public byte[] toEncryptedHashValue(java.lang.String algorithmName, byte[] value, int repeatCount)
algorithmName
- ハッシュアルゴリズム名value
- ハッシュ化前のバイナリrepeatCount
- ハッシュ化繰り返し回数public java.lang.String toEncryptedHashValue(java.lang.String algorithmName, java.lang.String value)
algorithmName
- ハッシュアルゴリズム名value
- ハッシュ化前の文字列public byte[] toEncryptedHashValue(java.lang.String algorithmName, byte[] value)
algorithmName
- ハッシュアルゴリズム名value
- ハッシュ化前のバイナリpublic java.lang.String toEncryptedHashBase64Value(java.lang.String algorithmName, java.lang.String text)
algorithmName
- ハッシュアルゴリズム名text
- ハッシュ化前の文字列public java.lang.String toHexString(byte[] value)
value
- バイナリprotected java.lang.String toBase64String(byte[] value)
value
- 変換前public java.lang.String getDefaultAlgorithmName()
public void setDefaultAlgorithmName(java.lang.String defaultAlgorithmName)
defaultAlgorithmName
- デフォルトハッシュアルゴリズム名public int getRepeatCount()
public void setRepeatCount(int repeatCount)
repeatCount
- デフォルトのハッシュ化繰り返し回数public static void main(java.lang.String[] args)
args
- args[0]:ハッシュ化する文字列(16進数形式も単なる文字列としてハッシュ化する)
args[1]:ハッシュ化の繰り返し回数
args[2]:ハッシュアルゴリズム名(MD2, MD5, SHA-1, SHA-256, SHA-384, SHA-512のいずれか、省略時はSHA-256)
args[3]:Base64化する場合はtrue, 16進数形式の場合はfalse、省略時はfalse