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.secretkeke ؛ استيراد javax.crypto.secretkeyfactory ؛ استيراد javax.crypto.spec.pbekeyspec ؛ الطبقة العامة sha {public static void main (string [] args) يرمي الاستثناء {EncodebyMac ("China op ... &*() ... & 802134 ...") ؛ Encodebysha ("China op ... &*() ... & 802134 ...") ؛ shafile () ؛ } / ** * ملخص الرسالة باستخدام خوارزمية MAC * param Data * Throws استثناء * / public static void EncodebyMac (بيانات السلسلة) يلقي الاستثناء {// keygenerator keygen = keygenerator.getInstance ("hmacsha1") ؛ // secretKey key = keygen.generatekey () ؛ . "رمز مصادقة الرسائل" (MAC) يوفر Mac طريقة للتحقق من سلامة المعلومات المرسلة أو المخزنة على مفاتيح سرية. وظيفة التجزئة (مثل MD5 أو SHA-1) */ MAC MAC. mac.init (مفتاح) ؛ byte [] dest = mac.dofinal (data.getBytes ()) ؛ system.out.println (dest.length) ؛ System.out.println ("MAC ملخص:" + arrays.toString (dest)) ؛ } / *** يستخدم تشفير Sha1 Message Digest MessagedIgest للتعامل مع* Throws استثناء* / سلسلة ثابتة عامة encodebysha (String str) رمي الاستثناء {messagedigest sha1 ؛ sha1 = messagedigest.getInstance ("sha1") ؛ // الثلاثة التالية غير متوفرة // sha1 = messagedigest.getInstance ("sha256") ؛ // sha1 = messagedigest.getInstance ("sha384") ؛ // sha1 = messagedigest.getInstance ("sha512") ؛ sha1.update (str.getBytes ()) ؛ // تحديث الملخص الأول بايت [] Digest = sha1.digest () ؛ // يتم الانتهاء من حساب التجزئة عن طريق إجراء العمليات النهائية مثل الحشو. بعد هذه الطريقة ، يتم إعادة تعيين الملخص. / * * استخدم صفيف البايت المحدد لإجراء التحديث النهائي للملخص وإكمال حساب الموجزة. * أي أن هذه الطريقة تستدعي تحديث (إدخال) ، * تمرر صفيف الإدخال إلى طريقة التحديث ، ثم يستدعي Digest (). */ // byte [] digest = sha1.digest (str.getBytes ()) ؛ String hex = tohex (Digest) ؛ System.out.println ("SHA1 Summary:" + Hex) ؛ العودة هيكس. } / *** ملخص بيانات الملف* athrows استثناء* / public static void shafile () rems {messagedigest messagedigest = messagedigest.getInstance ("sha1") ؛ DigestOutputStream DOS = New DigestOutputStream (FileOutputStream جديد (ملف جديد ("ABC.TXT")) ، messagedigest) ؛ dos.write ("الشعب الصيني ... و ()) f*(214) admin*". getBytes ()) ؛ dos.close () ؛ byte [] digest = messagedigest.digest () ؛ System.out.println ("اكتب ملفًا باستخدام دفق ، ملخص الملف هو:" + ToHex (Digest)) ؛ DigestInputStream dis = new DigestInputStream (FileInputStream جديد (ملف جديد ("ABC.TXT")) ، messagedigest) ؛ بايت [] buf = new byte [100] ؛ int len ؛ بينما ((len = dis.read (buf))! = -1) {system.out.println ("قراءة البيانات هي:" + سلسلة جديدة (buf ، 0 ، len)) ؛ } dis.close () ؛ byte [] digest2 = messagedigest.digest () ؛ // عند قراءة الدفق ، يتم الانتهاء من الملف ، والهضم هو نفسه عندما يتم كتابته. } / ** * sha1 digest هو hexadecimal * param digest * @return * / private static string tohex (byte [] digest) {StringBuilder sb = new StringBuilder () ؛ int len = digest.length ؛ سلسلة خارج = فارغة ؛ لـ (int i = 0 ؛ i <len ؛ i ++) {// out = integer.toHexString (0xff & digest [i]+0xabcdef) ؛ // أضف أي ملح خارج = integer.toHexString (0xff & digest [i]) ؛ // الطريقة الأصلية إذا (out.length () == 1) {sb.append ("0") ؛ // إذا قمت بإضافة 0 أمام 1 بت} sb.append (out) ؛ } return sb.toString () ؛ }}
MD5
MD5 (خوارزمية هضم الرسالة 5) ، الطبعة الخامسة من خوارزمية هضم الرسالة. Message Digest هي خوارزمية: بغض النظر عن المدة التي تستغرقها البيانات الأصلية ، فإن نتيجة هضم الرسالة ذات طول ثابت ؛ إنها خوارزمية لا رجعة فيها. ستؤدي التغييرات في أي جزء من البيانات الأصلية إلى اختلافات كبيرة في نتائج هضم الرسالة ، واحتمال حساب البيانات الأصلية بناءً على النتائج منخفض للغاية.
يمكن اعتبار Message Digest بصمة البيانات الأصلية. بصمات الأصابع المختلفة ستجعل البيانات الأصلية مختلفة.
حزمة 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.secretkeke ؛ استيراد javax.crypto.secretkeyfactory ؛ استيراد javax.crypto.spec.pbekeyspec ؛ الطبقة العامة md5 {public static void main (string [] args) يرمي الاستثناء {EncodebyMac ("China op ... &*() ... & 802134 ...") ؛ EncodebyMd5 ("China op ... &*() ... & 802134 ...") ؛ md5file () ؛ } / ** * ملخص الرسالة باستخدام خوارزمية MAC * param Data * Throws استثناء * / public static void EncodebyMac (بيانات السلسلة) يلقي الاستثناء {// keygenerator keygen = keygenerator.getInstance ("hmacmd5") ؛ // secretKey key = keygen.generatekey () ؛ . "رمز مصادقة الرسائل" (MAC) يوفر MAC طريقة للتحقق من سلامة المعلومات المرسلة أو المخزنة على مفاتيح سرية. وظيفة التجزئة (مثل md5 أو sha-1) } / *** يستخدم تشفير MD5 Message MessagedIgest للتعامل مع* Throws استثناء* / سلسلة ثابتة عامة encodebymd5 (String str) استثناء {messagedigest md5 ؛ MD5 = messagedigest.getInstance ("MD5") ؛ md5.update (str.getBytes ()) ؛ // تحديث الملخص الأول بايت [] Digest = md5.digest () ؛ // يتم الانتهاء من حساب التجزئة عن طريق إجراء العمليات النهائية مثل الحشو. بعد هذه الطريقة ، يتم إعادة تعيين الملخص. / * * استخدم صفيف البايت المحدد لإجراء التحديث النهائي للملخص وإكمال حساب الموجزة. * أي أن هذه الطريقة تستدعي تحديث (إدخال) ، * تمرر صفيف الإدخال إلى طريقة التحديث ، ثم يستدعي Digest (). */ // byte [] digest = md5.digest (str.getBytes ()) ؛ String hex = tohex (Digest) ؛ System.out.println ("MD5 Summary:" + Hex) ؛ العودة هيكس. } / *** ملخص بيانات الملف* athrows استثناء* / public static void md5file () يلقي الاستثناء {messagedigest messagedigest = messagedigest.getInstance ("md5") ؛ DigestOutputStream DOS = New DigestOutputStream (FileOutputStream جديد (ملف جديد ("ABC.TXT")) ، messagedigest) ؛ dos.write ("الشعب الصيني ... و ()) f*(214) admin*". getBytes ()) ؛ dos.close () ؛ byte [] digest = messagedigest.digest () ؛ System.out.println ("اكتب ملفًا باستخدام دفق ، ملخص الملف هو:" + ToHex (Digest)) ؛ DigestInputStream dis = new DigestInputStream (FileInputStream جديد (ملف جديد ("ABC.TXT")) ، messagedigest) ؛ بايت [] buf = new byte [100] ؛ int len ؛ بينما ((len = dis.read (buf))! = -1) {system.out.println ("قراءة البيانات هي:" + سلسلة جديدة (buf ، 0 ، len)) ؛ } dis.close () ؛ byte [] digest2 = messagedigest.digest () ؛ // عند قراءة الدفق ، يتم الانتهاء من الملف ، والهضم هو نفسه عندما يتم كتابته. } / ** * MD5 Digest هو hexadecimal * param digest * @return * / private static string tohex (byte [] digest) {StringBuilder sb = new StringBuilder () ؛ int len = digest.length ؛ سلسلة خارج = فارغة ؛ لـ (int i = 0 ؛ i <len ؛ i ++) {// out = integer.toHexString (0xff & digest [i]+0xabcdef) ؛ // أضف أي ملح خارج = integer.toHexString (0xff & digest [i]) ؛ // الطريقة الأصلية إذا (out.length () == 1) {sb.append ("0") ؛ // إذا قمت بإضافة 0 أمام 1 بت} sb.append (out) ؛ } return sb.toString () ؛ }}ملاحظة: فيما يلي أداة تشفير MD5 أخرى لك. يمكن للأصدقاء المهتمين الرجوع إليها:
أداة التشفير عبر الإنترنت MD5:
http://tools.vevb.com/password/createmd5password
عبر الإنترنت MD5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160 أداة التشفير:
http://tools.vevb.com/password/hash_md5_sha