يتم تقديم رموز التشفير والتشفير المتماثل AES بالتفصيل للرجوع إليها. المحتوى المحدد كما يلي
Package Demo.Security ؛ import java.io.ioException ؛ import java.io.unsupportedencodingexception ؛ import java.security.invalidKeyexception ؛ import java.security.nosuchalgorithmexception ؛ import java.security.securandom ؛ javax.crypto.badpaddingexception ؛ استيراد javax.crypto.cipher ؛ استيراد javax.crypto.illegalblocksizeexception ؛ استيراد javax.crypto.keygenerator ؛ استيراد javax.crypto.nosuchpaddingexception ؛ استيراد javax.crypto.scretkey ؛ javax.crypto.spec.secretketkeyspec ؛ استيراد sun.misc.base64decoder ؛ استيراد sun.misc.base64encoder ؛/*** aes تشفير مفتاح* 2. المفتاح * 4. إنشاء وتهيئة كلمة المرور * 5. تشفير المحتوى * 6. إرجاع السلسلة */السلسلة الثابتة العامة AESENCODE (سلسلة التشفير ، محتوى السلسلة) {try {// 1. قم ببناء مولد المفاتيح ، المحدد كخوارزمية AES ، وهي Keygenerator غير الحساسة للحالة. // 2. قم بتهيئة المولد الرئيسي وفقًا لقاعدة Ecnoderules // قم بإنشاء مصدر عشوائي 128 بت ، ووفقًا لمجموعة البايت المتماسكة Keygen.in (128 ، Securerandom الجديد (Encoderules.getBytes ())) ؛ // 3. قم بإنشاء مفتاح SecretKey الأصلي الأصلي Original_Key = keygen.generateKey () ؛ // 4. الحصول على صفيف البايت من المفتاح المتماثل الأصلي byte [] raw = Original_Key.getenCoded () ؛ // 5. قم بإنشاء مفتاح AES من مفتاح SecretKey Byte Array = New SecretKeySpec (RAW ، "AES") ؛ // 6. وفقًا للخوارزمية المحددة AES Cryptor Cipher Cipher = cipher.getinstance ("AES") ؛ // 7. تهيئة Cryptor ، المعلمة الأولى هي التشفير (incrypt_mode) أو عملية فك التشفير وفك التشفير (decrypt_mode) ، والمعلمة الثانية هي المفتاح المستخدم cipher.init (cipher.encrypt_mode ، المفتاح) ؛ // 8. احصل على مجموعة البايت من المحتوى المشفر (يجب ضبطه على UTF-8 هنا). خلاف ذلك ، إذا كان هناك صيني وإنجليزي مختلط في المحتوى ، فسيتم فك تشفيره في بايت رمز مشتعلة [] byte_encode = content.getBytes ("UTF-8") ؛ // 9. وفقًا لطريقة التهيئة للتشفير-encryption: تشفير بايت البيانات [] byte_aes = cipher.dofinal (byte_encode) ؛ // 10. قم بتحويل البيانات المشفرة إلى سلسلة // لن يتم العثور على الحزمة في Base64encoder هنا // الحل: // إزالتها أولاً يزيل مكتبة نظام JRE في مسار بناء المشروع ، ثم يضيف مكتبة نظام المكتبة JRE ، كل شيء يسير بشكل جيد بعد إعادة التثبيت. String AES_ENCODE = سلسلة جديدة (BASE64ENCODER () // 11. إرجاع السلسلة لإرجاع AES_ENCODE ؛ } 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 () ؛ } catch (UnsupportedEncodingException e) {E.PrintStackTrace () ؛ } // إذا كان هناك أي خطأ ، فأضف عودة فارغة فارغة ؛ } /** decrypt* عملية فك التشفير:* 1. نفس خطوات التشفير 1-4* 2. عكسي السلسلة المشفرة في صفيف بايت [] 3. قم ببناء مولد المفاتيح ، حدده كخوارزمية AES ، وليس Keygenerator حساس الحالة Keygen = keygenerator.getInstance ("AES") ؛ // 2. قم بتهيئة المولد الرئيسي وفقًا لقاعدة Ecnoderules // قم بإنشاء مصدر عشوائي 128 بت ، ووفقًا لمجموعة البايت المتماسكة Keygen.in (128 ، Securerandom الجديد (Encoderules.getBytes ())) ؛ // 3. قم بإنشاء مفتاح SecretKey الأصلي الأصلي Original_Key = keygen.generateKey () ؛ // 4. الحصول على صفيف البايت من المفتاح المتماثل الأصلي byte [] raw = Original_Key.getenCoded () ؛ // 5. قم بإنشاء مفتاح AES استنادًا إلى مفتاح SecretKey Byte Array = New SecretKeySpec (RAW ، "AES") ؛ // 6. وفقًا للخوارزمية المحددة AES Cipher ذاتية التكوين ، تشفر تشفير = cipher.getinstance ("AES") ؛ // 7. تهيئة تشفير ، المعلمة الأولى هي التشفير (incrypt_mode) أو عملية فك تشفير (decrypt_mode) ، والمعلمة الثانية هي المفتاح cipher.init (cipher.decrypt_mode ، المفتاح) ؛ // 8. فك تشفير المحتوى المشفر والمشفر في بايت بايت بايت [] byte_content = جديد base64decoder (). decodeBuffer (المحتوى) ؛ /** decrypt*/ byte [] byte_decode = cipher.dofinal (byte_content) ؛ String AES_DECODE = New String (BYTE_DECODE ، "UTF-8") ؛ إرجاع AES_DECODE ؛ } catch (nosuchalgorithMexception e) {e.printstacktrace () ؛ } catch (nosuchpaddingexception e) {E.PrintStackTrace () ؛ } catch (invalidKeyException e) {E.PrintStackTrace () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } catch (incholicalBlockSeizeException e) {e.printstacktrace () ؛ } catch (badpaddingexception e) {e.printStackTrace () ؛ } // إذا كان هناك أي خطأ ، فأضف عودة فارغة فارغة ؛ } public static void main (string [] args) {symmetricencoder se = new SymmetricenCoder () ؛ الماسح الضوئي = الماسح الضوئي الجديد (System.in) ؛ /** incryption*/ system.out.println ("استخدم التشفير المتماثل AES ، يرجى إدخال قواعد التشفير") ؛ encoderules string = scanner.next () ؛ System.out.println ("الرجاء إدخال المحتوى ليتم تشفيره:") ؛ محتوى السلسلة = الماسحة الضوئية .next () ؛ System.out.println ("وفقًا لقاعدة الإدخال"+التشفير+"النص المشفر هو:"+se.aesencode (التشفير ، المحتوى)) ؛ /** decrypt*/ system.out.println ("استخدم decryption المتماثل AES ، يرجى إدخال قواعد التشفير: (يجب أن يكون هو نفسه التشفير)") ؛ encoderules = scanner.next () ؛ System.out.println ("الرجاء إدخال المحتوى ليتم فك تشفيره (النص المشفر):") ؛ content = scanner.next () ؛ System.out.println ("وفقًا لقواعد الإدخال"+التشفير+"النص العادي الذي تم فك تشفيره هو:"+se.aesdncode (التشفير ، المحتوى)) ؛ }} نتائج الاختبار:
استخدم التشفير المتماثل AES ، يرجى إدخال قواعد التشفير. استخدام تشفير AES متماثل. الرجاء إدخال المحتوى الذي تريد تشفيره:
استخدم التشفير المتماثل AES لتشفير النص المشفر باستخدام التشفير المتماثل AES وفقًا لقواعد الإدخال هو: Z0NWRNPHGHGXHN0CQJLS58YCJHMCBFER33RWS7LW+AY =
استخدم فك التشفير المتماثل AES ، يرجى إدخال قواعد التشفير: (يجب أن يكون هو نفسه التشفير)
استخدم التشفير المتماثل AES لإدخال المحتوى (النص المشفر):
Z0NWRNPHGHGXHN0CQJLS58YCJHMCBFER33RWS7LW+AY =
النص العادي الذي تم فك تشفيره باستخدام التشفير المتماثل AES وفقًا لقواعد الإدخال هو: استخدام التشفير المتماثل AES
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.