تصف هذه المقالة وظائف التشفير والتشفير التي تنفذها JAVA استنادًا إلى خوارزمية التشفير المتماثل AES. شاركه للرجوع إليه ، على النحو التالي:
package com.soufun.com ؛ import java.io.unsupportedencodingException ؛ import java.security.invalidkeyexception ؛ import java.security.nosuchalgorithmexception ؛ import java.security.securandom ؛ import java.util.til.date ؛ javax.crypto.cipher ؛ استيراد javax.crypto.illegalblocksizeexception ؛ استيراد javax.crypto.keygenerator AESUTIL {private static Final String AES = "AES" ؛ Static Final String UTF8 = "UTF-8" ؛ keygenerator ثابت kgen = فارغ ؛ ثابت {try {kgen = keygenerator.getInstance (aes) ؛ } catch (nosuchalgorithmexception e) {// todo catch catch e.printstacktrace () ؛ }}/ * * param content: * param password: */private static byte [] encrypt (محتوى السلسلة ، كلمة مرور السلسلة) {try {// استخدم كتل رمز ثابت لإنشاء كائن keygenerator // keygenerator kgen = keygenerator.getInstance (aes) ؛ // استخدم 128-bit kgen.init (128 ، new SecurerAndom (password.getBytes ())) ؛ SecretKey SecretKey = kgen.generatekey () ؛ byte [] encodeFormat = secretKey.getenCoded () ؛ SecretKeySpec Key = New SecretKeySpec (Encodeformat ، AES) ؛ // كائن المشفر يكمل فعليًا عملية التشفير cipher cipher = cipher.getinstance (AES) ؛ // تشفير المحتوى لترميز byte [] bytecontent = content.getBytes (utf8) ؛ // تهيئة كائن الشفرات cipher.init (cipher.encrypt_mode ، المفتاح) ؛ // تنفيذ عملية التشفير بايت [] = cipher.dofinal (bytecontent) ؛ نتيجة العودة } catch (nosuchalgorithMexception e) {e.printstacktrace () ؛ } catch (nosuchpaddingexception e) {e.printStackTrace () ؛ } catch (invalidKeyException e) {E.PrintStackTrace () ؛ } catch (UnsupportedEncodingException e) {E.PrintStackTrace () ؛ } catch (incholicalBlockSeizeException e) {e.printstacktrace () ؛ } catch (badpaddingexception e) {e.printStackTrace () ؛ } إرجاع فارغ ؛ }/ * * param content: * param password: */private static byte [] decrypt (byte [] content ، string password) {try {// استخدم كتل رمز ثابت لإنشاء كائن keygenerator // keygenerator kgen = keygenerator.getinstance (aes) ؛ // استخدم 128-bit kgen.init (128 ، new SecurerAndom (password.getBytes ())) ؛ SecretKey SecretKey = kgen.generatekey () ؛ byte [] encodeFormat = secretKey.getenCoded () ؛ SecretKeySpec Key = New SecretKeySpec (Encodeformat ، AES) ؛ // كائن المشفر يكمل فعليًا عملية التشفير cipher cipher = cipher.getinstance (AES) ؛ // تهيئة كائن التشفير باستخدام مفتاح cipher.init (cipher.decrypt_mode ، المفتاح) ؛ // التنفيذ الرسمي لعملية عملية فك التشفير [] النتيجة = cipher.dofinal (المحتوى) ؛ نتيجة العودة } catch (nosuchalgorithMexception e) {e.printstacktrace () ؛ } catch (nosuchpaddingexception e) {E.PrintStackTrace () ؛ } catch (invalidKeyException e) {E.PrintStackTrace () ؛ } catch (incholicalBlockSeizeException e) {e.printstacktrace () ؛ } catch (badpaddingexception e) {e.printStackTrace () ؛ } إرجاع فارغ ؛ } / ** * binary-》 تحويل hex * param buf * regurn * / private static string parsebyte2Hexstr (byte buf []) {StringBuffer sb = new StringBuffer () ؛ لـ (int i = 0 ؛ i <buf.length ؛ i ++) {string hex = integer.toHexString (buf [i] & 0xff) ؛ if (hex.length () == 1) {hex = '0' + hex ؛ } sb.append (Hex.ToupperCase ()) ؛ } return sb.toString () ؛ } / ** * hex-》 التحويل الثنائي * param hexstr * @return * / private static byte [] parsehexstr2byte (String hexstr) {if (Hexstr.Length () <1) {return null ؛ } byte [] result = new byte [hexstr.length () / 2] ؛ لـ (int i = 0 ؛ i <hexstr.length () / 2 ؛ i ++) {int high = integer.parseint (hexstr.substring (i * 2 ، i * 2+1) ، 16) ؛ int low = integer.parseint (Hexstr.SubString (i * 2 + 1 ، i * 2 + 2) ، 16) ؛ النتيجة [i] = (byte) (عالية * 16 + منخفضة) ؛ } نتيجة الإرجاع ؛ } static void main (string [] args) يرمي UnsupportedEncodingException {long begin = new date (). getTime () ؛ Content Content = "اختبار التشفير AAADES" ؛ سلسلة كلمة المرور = "12345678DD" ؛ // encrypt system.out.println ("قبل التشفير:" + محتوى) ؛ Byte [] Encryptresult = encrypt (المحتوى ، كلمة المرور) ؛ سلسلة encryptresultstr = parsebyte2Hexstr (Encryptresult) ؛ System.out.println ("بعد التشفير:" + Encryptresultstr) ؛ // decrypt byte [] decryptfrom = parseHexStr2Byte (Encryptresultstr) ؛ byte [] decryptresult = decrypt (decryptfrom ، كلمة المرور) ؛ // decrypt content for decoding string result = new string (decryptresult ، utf8) ؛ System.out.println ("بعد فك تشفير:" + نتيجة) ؛ نهاية طويلة = تاريخ جديد (). getTime () ؛ system.out.println (نهاية begin) ؛ }}ملاحظة: يولد SecurerAndom تسلسلًا عشوائيًا آمنًا ، password.getBytes () هو بذرة. طالما أن البذور هي نفسها ، فإن التسلسل هو نفسه. لذلك ، طالما أن هناك كلمة مرور ، يمكن إجراء فك التشفير ، ويمكن استعادة هذا التسلسل.
ملاحظة: يمكن للأصدقاء المهتمين بالتشفير وفك التشفير أيضًا أن يشير إلى الأدوات عبر الإنترنت لهذا الموقع:
الكشف عن أمان كلمة المرور عبر الإنترنت:
http://tools.vevb.com/password/my_password_safe
مولد كلمة المرور عالي القوة:
http://tools.vevb.com/password/createstrongpassword
أدوات تشفير URL الرعد ، Express ، و Tornado:
http://tools.vevb.com/password/urlrethunder
أداة تشفير خوارزمية التجزئة عبر الإنترنت:
http://tools.vevb.com/password/hash_encrypt
عبر الإنترنت MD5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160 أداة التشفير:
http://tools.vevb.com/password/hash_md5_sha
sha1/sha224/sha256/sha384/sha512 أداة التشفير:
http://tools.vevb.com/password/sha_encode
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.