MESSAGED GIGESTクラス
MESSAGEDGESTクラスは、MD5やSHAアルゴリズムなどの情報Digestアルゴリズムの機能を備えたアプリケーションを提供します。情報ダイジェストは、任意のサイズのデータを受信し、固定長のハッシュ値を出力する安全な一方向ハッシュ関数です。
MESSAGED GIGESTオブジェクトは初期化され始めます。このオブジェクトは、更新()メソッドを使用してデータを処理します。 summaryをリセットするために、いつでもRESET()メソッドを呼び出すことができます。更新する必要があるすべてのデータが更新されたら、ハッシュ計算を完了するためにDigest()メソッドの1つを呼び出す必要があります。
Digestメソッドは、特定の量の更新データに対してのみ1回呼び出すことができます。ダイジェストが呼び出された後、MESSAGED GIGESTオブジェクトは初期状態にリセットされます。
説明:
ウェブサイトでは、ウェブサイトメンバーのユーザー名やパスワードなどのプライバシー情報を保護するために、登録時にMD5またはその他の方法で直接暗号化します。データベース管理者でさえ、メンバーのパスワードやその他の情報を表示できません。データベースのパスワード効果は、8E830882F03B2CB84D1A657F346DD41A効果などです。
MD5アルゴリズムは不可逆的であるため、多くのWebサイトで広く使用されています。
一般的に使用される3つの暗号化方法
方法1:ビット演算子を使用して、暗号化されたデータを16進数に変換します方法2:フォーマット法を使用して、暗号化されたデータを16進体に変換します(推奨)
方法3:アルゴリズムを使用して、暗号化されたデータを16進体に変換します
java.security.messagedigest; Import java.security.nosuchalgorithmexception;/*** java* @author xiaokui*/public class encryptionutil {/*** md5とsha-1の両方がmd4とsha-1の間に違いがあるため、違いがあります。ダイジェストは、MD5ダイジェストよりも32ビット長くなります(1byte = 8ビット、長さ4バイトに相当し、16進数に変換した後のMD5を超える8文字)。 *強制攻撃の場合、MD5は2128のオーダーの動作であり、SHA-1は2160の順序の動作です。 *同じダイジェストの2つのメッセージの難易度:MD5は264の動作であり、280の順序の操作です。 *したがって、SHA-1は強制攻撃に対してより強力です。ただし、SHA-1にはMD5(80:64)よりも多くのサイクルステップがあり、処理されるキャッシュは大きいため(160ビット:128ビット)、SHA-1はMD5よりゆっくりと走行します。 * *暗号化する必要がある@paramソース文字列 * @param hashtype暗号化タイプ(md5およびsha) * @return */public static string gethash(string source、string hashtype){//バイトをヘクスディジットに変換するために使用される文字'8'、 '9'、 'a'、 'b'、 'c'、 'd'、 'e'、 'f'}; try {messagedigest md = mesagedigest.getinstance(hashtype); md.update(source.getbytes()); // md.digest(); // ciphertextを取得してハッシュ計算を完了し、128ビットの長い整数char str [] = new char [16 * 2];各バイトはヘキサデシマル文字にbyte byte0 = encryptStr [i]; // i-ryte str [k ++] = hexdigits [byte0 >>> 4&0xf]; // byteの上部4ビットの数値変換を取る、>>>論理的なシフトのために、[k ++]を右にシフトします[K ++] 0xf]; // byteの下部4ビットの数値変換を取ります} new string(str); // string} catch(nosuchalgorithmexcepts e){e.printstacktrace();} return null;}/** @param source shing shimypted* @paramteped hashtepe andhamtepe and null return null;} return null;} return null;} return null(); * @return */public static string gethash2(string source、string hashtype){stringbuilder sb = new StringBuilder(); Mesaged Gigest Md5; Try {MESSAGESGEST.GETINSTANCE(HASHTYPE); MD5.UPDATE(Source.GetBytes()); {sb.append(string.format( "%02x"、b)); // decimal to hexadecimal、xは16進数の出力を意味します。02は、出力が0} return sb.toString();} catch(nosuchalgorithectipttrace(){e.printstocttring(); null;}/** @paramソース文字 @@param hashtype暗号化タイプ(md5およびsha)* @return*/public static string gethash3(string source、string hashtype){//バイトを変換するために使用される文字[] '7'、 '8'、 '9'、 'a'、 'b'、 'c'、 'd'、 'e'、 'f'}; stringbuilder sb = new stringbuilder(); mesagedgest md5; try {md5 = mesagedigest.getinstance(hashtype); md5.update(source(hashtype); md5.digest(); for(int i = 0; i <encryptstr.length; i ++){int iret = encryptStr [i]; if(iRet <0){iRet += 256;} int1 = int1 = int1; sb.toString();} catch(nosuchalgorithmexception e){e.printstacktrace();} return null;} public static void main(string [] args){system.out.out.println(gethash(gethash( "xiaokui"、 "md5")) "/n"; system.out.println(gethash2("xiaokui"、 "md5")); system.out.println(gethash2( "xiaokui"、 "sha") + "/n"; "md5"))出力結果
8E830882F03B2CB84D1A657F346DD41A 0BA5512371D00C86E91712F44AAB7138 8E830882F03B2CB84D1A657F346661A 0BA5512371D00C86E91712F44AAB713898745F91 8E830882F03B2CB84D1A657F346DD41A 0BA5512371D00C86E91712F44AB4AAB7138989845F91
3つの方法が同じ効果を実行し、SHAの長さはMD5より8文字(32ビット)が多いことがわかりました。
要約します
上記は、Javaに付属する暗号化クラスのMessaged Gigestのコード例に関するこの記事の内容全体です。私はそれが誰にでも役立つことを願っています。欠点がある場合は、それを指摘するためにメッセージを残してください。