Hash関数暗号化アルゴリズム(一)

3864 ワード

一、暗号学を使用する目的:
機密性:ユーザーのIDやデータの読み取りを防止します. l
認証:データが特定の側から送信されることを確認します. 
データ整合性:データが変更されないようにします.
二、暗号化アルゴリズムの分類:
1、対称暗号化
対称鍵を用いた暗号化システムの暗号化、復号化過程はいずれも同じ鍵を採用しており、通信双方は同時にこの鍵を取得して暗号解読操作を行わなければならない.
一般的な対称暗号化:DES3 DESAES
2、非対称暗号化
非対称暗号化システムで採用される暗号解読鍵は異なり、暗号化されたものを公開鍵、復号されたものを秘密鍵と呼ぶ.公開鍵暗号化秘密鍵復号、秘密鍵署名公開鍵検証
一般的な非対称アルゴリズム:RSADSAECC
3、ハッシュ関数暗号化アルゴリズム
鍵を借りる必要はありません.主に、前の2つの暗号化プロセスで保護が必要な部分に対して完全性、偽造防止のサポートを提供します.
一般的なハッシュ暗号化アルゴリズム:MD 5,SHA-1,SHA-2,SHA-256,SHA-X(シリーズ)
三、ハッシュアルゴリズム
1、ハッシュ
データを乱して混合し、ハッシュアルゴリズムによってハッシュ値という指紋を再作成し、通常は短いランダムアルファベットと数字からなる文字列でハッシュ値を表す.2、ハッシュアルゴリズムの特性
1)一方向不可逆
ハッシュ(Hash)アルゴリズムは,暗号化プロセスのみで復号化プロセスがない一方向暗号化システムである.
2)再現性
同じ入力は同じハッシュ関数で同じハッシュ値を得ますが、ハッシュ値が同じでない場合は入力結果が同じです.
JAvaではequalsメソッドjavaのequalsメソッドとhashcodeメソッドを使用し、javaではhashcodeでハッシュ値を計算し、equalsメソッドを使用して比較し、trueを返して同じオブジェクトを表すことができます.
    	String result = new String();
    	String result2 = new String();
    	result="12121";
    	result2="121211";
        System.out.println(result.hashCode());
        System.out.println(result2.hashCode());
        
        String s="12121";
        String ss="12121";
        System.out.println(s.equals(ss));
        System.out.println(s.hashCode());
        System.out.println(ss.hashCode());
は結果を返します.
	46790767
	1450513826
	true
	46790767
	46790767

同じタイプのオブジェクトに対して、オブジェクト値が同じ、すなわちハッシュ関数の入力が同じであり、出力されるハッシュ値も同じであることがわかります.オブジェクトの参照は同じですが、オブジェクトの値が異なる場合、つまり異なるheap空間を指す場合、異なるハッシュ値が計算されます.
3)衝突防止
異なる入力データは、同じハッシュ関数を介して生成されるハッシュ値が異なるに違いありません.同じようにハッシュ競合が発生します(詳細はブロガーの前のブログの更新を参照).
2、ハッシュアルゴリズムを実現する
ハッシュアルゴリズムには、加算ハッシュ、ビット演算ハッシュ、乗算除算ハッシュなど、多重実装の考え方と方式がある.
加算ハッシュは,各入力サイクルを重畳して最後のハッシュ結果を構成し,primeは任意の質量数である.
	static int additiveHash(String key, int prime)
	{
	int hash, i;
	for (hash = key.length(), i = 0; i < key.length(); i++)
	hash += key.charAt(i);
	return (hash % prime);
	}
ビット演算は、入力要素を十分に混合するためにシフト、異種または輸送演算を採用する
	static int rotatingHash(String key, int prime)
	{
	int hash, i;
	for (hash=key.length(), i=0; i	hash = (hash<<4)^(hash>>28)^key.charAt(i);
	return (hash % prime);
	}

四、ハッシュ暗号化アルゴリズム
1、ハッシュ暗号化アルゴリズム
ハッシュアルゴリズムは暗号化学に応用され、暗号化学分野のハッシュアルゴリズムをハッシュ暗号化アルゴリズムと呼び、一般的に上述したようなMD 5、SHA-シリーズアルゴリズム、各ハッシュ暗号化アルゴリズムは、あるハッシュ関数によって反復され、任意の長さのメッセージを入力し、圧縮を経て「メッセージ要約」(MessageDigest)を生成する.
2、ハッシュ暗号化アルゴリズムのプロセス
プリプロセッシング(Preprocessing):メッセージの埋め込み、メッセージをm個の処理ブロックに分割し、ハッシュに初期化値を設定する
ハッシュ計算(HashComputation):前処理が完了したデータをメッセージの要約を生成し、対応するハッシュ関数、関連する常熟を利用してハッシュ値(すなわちハッシュ値、要約情報)を生成する.
各ハッシュ暗号化アルゴリズムは、初期化パラメータに基づいて、SHA−256などの一定長の要約情報を生成し、128ビットの要約情報を生成する.長安ほど全性が高い.
3、応用:
エラー修正:データの送信元で、送信するデータにハッシュ関数を適用し、計算結果を元のデータとともに送信します.データの受信者では、同じハッシュ関数が受信したデータに再び適用され、2回のハッシュ関数で計算された結果が一致しない場合は、データの伝送中にエラーがあることを示します.これを冗長チェックと呼びます.
例えば、メール詐欺防止技術におけるDKIMでは、メールbody情報はsimple/relaxedハッシュ関数を用いてbh値を算出し、元のデータとともに送信する.データ受信者は、同じsimple/relaxedハッシュ関数を使用して、受信したデータをもう一度ハッシュ計算し、2回のハッシュ計算の結果が一致したかどうかを比較します.一致すると、メールが転送中に改ざんされないことを保証し、メッセージの完全性を確保します.