في برامجنا ، غالبًا ما يتعين علينا تشفير بعض المحتوى الخاص. اليوم قمت بتلخيص بعض أساليب التشفير البسيطة وشاركتها معك!
كيفية تنفيذ التشفير البسيط وفك تشفير الأوتار مع جافا؟ لضمان أمان معلومات المستخدم ، عندما يحفظ النظام معلومات المستخدم ، يكون من الضروري تشفير وحفظ كلمة المرور الخاصة به في قاعدة البيانات.
عندما تحتاج إلى استخدام كلمة مرور ، قم بإخراج البيانات وفك تشفيرها.
تجنب حفظ كلمات مرور النص العادي.
الخطة 1:
حزمة com.tnt.util ؛ استيراد java.security.messagedigest ؛ الفئة العامة StringUtil {private Final Static String [] HexDigits = {"0" ، "1" ، "2" ، "3" ، "4" ، "5" ، "6" ، "7" ، "8" ، "9" ، "A" ، "B" ، "C" ، "D" ، "E" ، "F"} ؛ / *** تحويل صفيف البايت إلى سلسلة hex** param b* byte array* @regurn hex string*/ public static string bytearraytoexstring (byte [] b) {StringBuffer ResultsB = new StringBuffer () ؛ لـ (int i = 0 ؛ i <b.length ؛ i ++) {resultsb.append (bytetoHexString (b [i])) ؛ } return resultsb.toString () ؛ } السلسلة الثابتة الخاصة bytetoHexstring (byte b) {int n = b ؛ إذا (n <0) n = 256 + n ؛ int d1 = n / 16 ؛ int d2 = n ٪ 16 ؛ إرجاع hexdigits [d1] + hexdigits [d2] ؛ } السلسلة الثابتة العامة md5encode (string Origin) {String ResultString = null ؛ جرب {resultString = New String (Origin) ؛ messagedigest md = messagedigest.getInstance ("MD5") ؛ النتائج = bytearRayToHexString (Md.Digest (ResultString .getBytes ())) ؛ } catch (استثناء ex) {} return resulttring ؛ } public static void main (string [] args) {system.err.println (md5encode ("123456")) ؛ }}الخطة 2
package com.shangyu.core.utils ؛ الفئة العامة md5 {سلسلة ثابتة عامة getMd5 (byte [] المصدر) {string s = null ؛ char hexdigits [] = {// الشخصيات المستخدمة لتحويل البايتات إلى تمثيل سداسي سداسي '0' ، '1' ، '2' ، '3' ، '4' ، '' ، '،' ، '،' ، '،' ، '،' ، '، "a '،' b '،' c '،' d '،' e '،' f '} ؛ جرب {java.security.messagedigest md = java.security.messagedigest.getInstance (" md5 ") ؛ md.update (المصدر) ؛ byte tmp [] = md.digest () ؛ // نتيجة الحساب لـ MD5 هي عدد صحيح طويل 128 بت ، // ويمثله بايت ، وهو 16 بايت. char str [] = new Char [16 * 2] ؛ // إذا تم تمثيل كل بايت في سداسي عشري ، يتم استخدام حرفين ، // لذلك ، يتطلب الأمر 32 حرفًا لتمثيل int in k = 0 ؛ // يمثل موضع الحرف المقابل في نتيجة التحويل لـ (int i = 0 ؛ i <16 ؛ i ++) {// بدءًا من البايت الأول ، تحويل كل بايت من md5 // إلى أحرف سداسية بايت byte0 = tmp [i] ؛ // خذ I-th byte str [k ++] = hexDigits [byte0 >>> 4 & 0xf] ؛ . // خذ التحويل العددي لـ 4 بتات أقل في البايت} s = سلسلة جديدة (str) ؛ // قم بتحويل النتيجة بعد التحويل إلى سلسلة} catch (استثناء e) {E.PrintStackTrace () ؛} return s ؛} سلسلة ثابتة عامة getMd5 (سلسلة str) {return getMd5 (str.getbytes ()) ؛}شكرا لك على القراءة ، آمل أن تساعدك. شكرا لك على دعمك لهذا الموقع!