أولاً ، دعونا نفهم تطبيق تشفير MD5 من الشكل التالي ، على النحو التالي
package com.pb ؛ import java.io.unsupportedencodingException ؛ import java.security.messagedigest ؛ استيراد java.security ملخص* 4. تحويل البايت [] إلى سلسلة سداسية عشرية مع بحث 32 بت*/الفئة العامة MD5 {/** إنشاء MD5 مع تم تمريره في سلسلة المعلمة*/public void generatemd5 (إدخال السلسلة) {try {// 1. تهيئة كائن ملخص معلومات MessagedIgest وحدده على أنه MD5 دون MDADEGEST MD MD = messagedigest.getInstance ("MD5") ؛ // 2. تمرير في السلسلة المراد حسابها لتحديث معلومات الملخص ، تم تمريرها في البايت بايت بايت [] ، // تحويل السلسلة إلى صفيف البايت باستخدام طريقة getBytes () // عند تحديدها ، يكون ترميز الأحرف الخاص به هو UTF-8 MD.Update (input.getBytes ("UTF-8")) ؛ // 3. احسب طريقة ملخص المعلومات () طريقة // إرجاع القيمة هي بايت صفيف البايت [] hashcode = md.digest () ؛ // 4. تحويل Byte [] تحويل إلى سلسلة سداسي عشرية مع بحث 32 بت // إعلان كائن stringBuffer لتخزين آخر قيمة stringbuffer sb = new StringBuffer () ؛ // نقل صفيف البايت لـ (byte b: hashcode) {// تحويل محتوى الصفيف إلى hexadecimal ، sb.append (character.fordigit (b >> 4 & 0xf ، 16)) ؛ // Transfer to the 32-bit hexadecimal sb.append (character.fordigit (b & 0xf ، 16)) ؛ } system.out.println ("النتيجة بعد التشفير هي:"+sb.toString ()) ؛ } catch (nosuchalgorithmexception e) {// todo catch catch e.printstacktrace () ؛ } catch (UnsupportedEncodingException e) {// todo catch catch e.printstacktrace () ؛ }} public static void main (string [] args) {// إعلان الكائن الذي يشفر فئة md5 md5 md5 = new Md5 () ؛ // استخدم الماسح الضوئي لإدخال ماسح ضوئي أحرف = ماسح ضوئي جديد (System.in) ؛ System.out.println ("الرجاء إدخال المحتوى ليتم تشفيره:") ؛ إدخال السلسلة = الماسحة الضوئية .nextLine () ؛ // استدعاء طريقة التشفير md5.generatemd5 (الإدخال) ؛ }} نتيجة:
الرجاء إدخال المحتوى ليتم تشفيره:
النتيجة بعد تعلم عملية تشفير MD5 هي: B826CDAC46F01DCC8CC60A76CEBF858
الرمز الثاني:
حزمة test.md5 ؛ استيراد java.security.messagedigest ؛ الطبقة العامة md5util {public Final Static String Md5 (String s) {char hexdigits [] = {'0' ، '1' ، '2' ، '3' ، '4' ، '5' ، '6' ، '7' ، '8' ، '9' ، 'a' ، 'b' ، 'c' ، 'd' ، 'e' ، 'f'} ؛ حاول {byte [] btinput = s.getBytes () ؛ // احصل على كائن messagedigest من خوارزمية MD5 Digest MessAgedigest mdinst = messagedigest.getInstance ("MD5") ؛ // تحديث Digest mdinst.update (btinput) ؛ // احصل على byte ciphertext [] md = mdinst.digest () ؛ // تحويل النص المشفر إلى نموذج سلسلة hex int j = md.length ؛ char str [] = new Char [J * 2] ؛ int k = 0 ؛ لـ (int i = 0 ؛ i <j ؛ i ++) {byte byte0 = md [i] ؛ str [k ++] = hexDigits [byte0 >>> 4 & 0xf] ؛ str [k ++] = hexDigits [byte0 & 0xf] ؛ } إرجاع سلسلة جديدة (str) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ العودة لاغية. }} public static void main (string [] args) {system.out.println (md5util.md5 ("20121221")) ؛ system.out.println (md5util.md5 ("التشفير")) ؛ }}الجزء الثالث من الكود: تنفيذ Java لخوارزمية تشفير MD5
قم بتعبئة أخرى ؛ استيراد java.security.messagedigest ؛ استيراد java.security.nosuchalgorithmexception ؛/** md5 خوارزمية*/الطبقة العامة md5 {// العالمية الصفيف الخاص بسلسلة ثابتة خاصة [، 6 " "A" ، "B" ، "C" ، "D" ، "E" ، "F"} ؛ Public Md5 () {} // نموذج الإرجاع كرقم وسلسلة String static static bytetoArrayString (byte bbyte) {int iret = bbyte ؛ // system.out.println ("iret ="+iret) ؛ if (iRet <0) {iRet += 256 ؛ } int id1 = iRet / 16 ؛ int id2 = iRet ٪ 16 ؛ إرجاع strdigits [id1] + strdigits [id2] ؛ } // نموذج الإرجاع هو مجرد سلسلة من الأرقام الثابتة (byte bbyte) {int iret = bbyte ؛ System.out.println ("IRET1 =" + IRET) ؛ if (iRet <0) {iRet += 256 ؛ } return string.valueof (IRET) ؛ }. لـ (int i = 0 ؛ i <bbyte.length ؛ i ++) {sbuffer.append (bytetoArrayString (bbyte [i])) ؛ } return sbuffer.toString () ؛ } السلسلة الثابتة العامة getMD5Code (String Strobj) {String ResultString = null ؛ حاول {resultstring = سلسلة جديدة (strobj) ؛ messagedigest md = messagedigest.getInstance ("MD5") ؛ // md.digest () قيمة إرجاع هذه الوظيفة هي صفيف البايت الذي يخزن نتائج التجزئة = bytetostring (md.digest (strobj.getbytes ())) ؛ } catch (nosuchalgorithMexception ex) {ex.printStackTrace () ؛ } نتائج الإرجاع ؛ } public static void main (string [] args) {md5 getMd5 = new md5 () ؛ System.out.println (getMd5.getMd5Code ("000000")) ؛ }}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.