SHA1
パッケージcom.stone.security; java.io.bytearrayinputStreamをインポートします。 java.io.fileをインポートします。 java.io.fileinputStreamをインポートします。 java.io.fileoutputStreamをインポートします。 java.security.digestinputStreamをインポートします。 java.security.digestoutputStreamをインポートします。 java.security.messagedigestをインポートします。 java.util.arraysをインポートします。 javax.crypto.macをインポートします。 javax.crypto.secretkeyをインポートします。 javax.crypto.secretkeyFactoryをインポートします。 javax.crypto.spec.pbekeyspecをインポートします。 public class sha {public static void main(string [] args)throws exception {encodebymac( "china op ...&*()...&802134 ..."); encodebysha( "中国op ...&*()...&802134 ..."); shafile(); } / ** * MACアルゴリズムを使用したメッセージサマリー * @Param Data * @Throws Exception * / public Static void encodeByMac(String Data)Throws Exception {// keyGenerator keygen = keygenerator.getInstance( "hmacsha1"); // secretkey key = keygen.genertekey(); //毎回生成されるこのキーは異なります、pbekeyspec keyspec = new pbekeyspec( "randomキー^(^&*^%$"。tochararray()); secretkeyfactory keyactory = secretkeyfactory.getInstance( "pbewithmd5anddes");認証コード "(mac)アルゴリズム。 * macは、秘密の鍵に基づいて信頼できないメディアに送信または保存された情報の整合性をチェックする方法を提供します。 *通常、メッセージ検証コードは、2つの間で送信される情報を検証するために秘密の鍵を共有する2人の参加者間で使用されます。暗号化ハッシュ関数(MD5またはSHA-1など)//次の3つのMac = Mac.GetInstance( "HMACSHA256"); Mac.getInstance( "hmacsha512"); mac.init(key); byte [] dest = mac.dofinal(data.getBytes()); System.out.println(dest.length); System.out.println( "Mac Summary:" + arrays.toString(dest)); } / *** Sha1暗号化はメッセージダイジェストメッセージMESSAGEDGESTを使用して* @Throws例外* / public Static String EncodeBysha(string str)throws Exception {Messagedigest sha1; sha1 = mesagedigest.getInstance( "sha1"); //次の3つは利用できません// sha1 = mesagedigest.getInstance( "sha384"); // sha1 = mesagedigest.getInstance( "sha512"); sha1.update(str.getbytes()); //概要first byte [] digest = sha1.digest()を更新します。 //ハッシュ計算は、パディングなどの最終操作を実行することにより完了します。この方法が呼び出された後、要約はリセットされます。 / * *指定されたバイト配列を使用して、概要の最終更新を作成し、概要計算を完了します。 *つまり、このメソッドは最初に更新(入力)を呼び出し、 *入力配列を更新メソッドに渡し、次にDigest()を呼び出します。 */ // byte [] digest = sha1.digest(str.getbytes()); string hex = tohex(digest); System.out.println( "sha1概要:" + hex);ヘックスを返します。 } / ***ファイルデータの概要* @Throws例外* / public static void shafile()スロー例外{MessagedGest MersagedGest = MessagedGest.getInstance( "sha1"); DigestOutputStream dos = new DigestOutputStream(new FileOutputStream(new file( "abc.txt"))、Messaged Gigest); dos.write( "中国人...&())f*(214)admin*"。getBytes()); dos.close(); byte [] digest = mesagedigest.digest(); System.out.println( "ストリームを使用してファイルを書き込むと、ファイルの要約は次のとおりです。 DigestinputStream dis = new DigestinputStream(new FileInputStream(new File( "abc.txt"))、MESSAGED GIGEST); byte [] buf = new byte [100]; int len; while((len = dis.read(buf))!= -1){system.out.println( "データread is:" + new String(buf、0、len)); } 開示する(); byte [] digest2 = mesagedgest.digest(); //ストリームが読み取られると、ファイルが終了し、Digestがsystem.out.printlnの記述の場合と同じです( "ファイルを読み取るためにストリームを使用すると、ファイルのダイジェストは" + tohex(digest2)); } / ** * sha1ダイジェストはhexadecimal * @param digest * @return * / private static string tohex(byte [] digest){stringbuilder sb = new StringBuilder(); int len = digest.length; string out = null; for(int i = 0; i <len; i ++){// out = integer.tohexstring(0xff&digest [i]+0xabcdef); // SALT OUT = INTEGER.TOHEXSTRING(0xff&Digest [i]); //元の方法if(out.length()== 1){sb.append( "0"); // 1ビットの前に0を追加した場合} sb.Append(out); } return sb.toString(); }}
MD5
MD5(Message Digest Algorithm 5)、Message Digestアルゴリズムの第5版。メッセージダイジェストはアルゴリズムです。元のデータがどれだけ長くても、メッセージダイジェストの結果は固定長です。これは不可逆的なアルゴリズムです。元のデータのビットの変更は、メッセージダイジェストの結果に大きな違いを引き起こし、結果に基づいて元のデータを計算する確率は非常に低くなります。
メッセージダイジェストは、元のデータの指紋と見なすことができます。異なる指紋により、元のデータが異なります。
パッケージcom.stone.security; java.io.bytearrayinputStreamをインポートします。 java.io.fileをインポートします。 java.io.fileinputStreamをインポートします。 java.io.fileoutputStreamをインポートします。 java.security.digestinputStreamをインポートします。 java.security.digestoutputStreamをインポートします。 java.security.messagedigestをインポートします。 java.util.arraysをインポートします。 javax.crypto.macをインポートします。 javax.crypto.secretkeyをインポートします。 javax.crypto.secretkeyFactoryをインポートします。 javax.crypto.spec.pbekeyspecをインポートします。パブリッククラスMD5 {public static void main(string [] args)throws exception {encodebymac( "china op ...&*()...&802134 ..."); encodeBymd5( "中国OP ...&*()...&802134 ..."); md5file(); } / ** * MACアルゴリズムを使用したメッセージサマリー * @param Data * @Throws Exception * / public static void encodeBymac(String Data)Throws Exception {// keyGenerator keygen = keygenerator.getInstance( "hmacmd5"); // secretkey key = keygen.genertekey(); //毎回生成されるこのキーは異なります、pbekeyspec keyspec = new pbekeyspec( "randomキー^(^&*^%$"。tochararray()); secretkeyfactory keyactory = secretkeyfactory.getInstance( "pbewithmd5anddes");認証コード "(mac)アルゴリズム。 * macは、秘密の鍵に基づいて信頼できないメディアに送信または保存された情報の整合性を確認する方法を提供します。 *通常、メッセージ検証コードは、2人の間で送信される情報を検証するために秘密の鍵を共有する2人の参加者間で使用されます。暗号化されたハッシュ関数 */ mac.getinstance( "hmacmd5"); } / *** md5暗号化はメッセージダイジェストメッセージを使用して* @Throws例外* / public static string encodeByMd5(string str)throws exception {mesagedigest md5; MD5 = MESSAGEDGEST.GETINSTANCE( "MD5"); md5.update(str.getBytes()); //概要first byte [] digest = md5.digest()を更新します。 //ハッシュ計算は、パディングなどの最終操作を実行することにより完了します。この方法が呼び出された後、要約はリセットされます。 / * *指定されたバイト配列を使用して、概要の最終更新を作成し、概要計算を完了します。 *つまり、このメソッドは最初に更新(入力)を呼び出し、 *入力配列を更新メソッドに渡し、次にDigest()を呼び出します。 */ // byte [] digest = md5.digest(str.getBytes()); string hex = tohex(digest); System.out.println( "md5概要:" + hex);ヘックスを返します。 } / ***ファイルデータの概要* @Throws例外* / public static void md5file()スロー例外{mesagedigest messagedgest = mesagedgest.getInstance( "md5"); DigestOutputStream dos = new DigestOutputStream(new FileOutputStream(new file( "abc.txt"))、Messaged Gigest); dos.write( "中国人...&())f*(214)admin*"。getBytes()); dos.close(); byte [] digest = mesagedigest.digest(); System.out.println( "ストリームを使用してファイルを書き込むと、ファイルの要約は次のとおりです。 DigestinputStream dis = new DigestinputStream(new FileInputStream(new File( "abc.txt"))、MESSAGED GIGEST); byte [] buf = new byte [100]; int len; while((len = dis.read(buf))!= -1){system.out.println( "データread is:" + new String(buf、0、len)); } 開示する(); byte [] digest2 = mesagedgest.digest(); //ストリームが読み取られると、ファイルが終了し、Digestがsystem.out.printlnの記述の場合と同じです( "ファイルを読み取るためにストリームを使用すると、ファイルのダイジェストは" + tohex(digest2)); } / ** * md5ダイジェストはhexadecimal * @param digest * @return * / private static string tohex(byte [] digest){stringbuilder sb = new StringBuilder(); int len = digest.length; string out = null; for(int i = 0; i <len; i ++){// out = integer.tohexstring(0xff&digest [i]+0xabcdef); // SALT OUT = INTEGER.TOHEXSTRING(0xff&Digest [i]); //元の方法if(out.length()== 1){sb.append( "0"); // 1ビットの前に0を追加した場合} sb.Append(out); } return sb.toString(); }}PS:ここに、さらに2つのMD5暗号化ツールがあります。興味のある友達はそれを参照できます:
MD5オンライン暗号化ツール:
http://tools.vevb.com/password/createmd5password
オンラインMD5/ハッシュ/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160暗号化ツール:
http://tools.vevb.com/password/hash_md5_sha