تصف هذه المقالة تحليل تنفيذ Java لخوارزمية DES تشفير وفك التشفير. شاركه للرجوع إليه ، على النحو التالي:
مقدمة:
خوارزمية تشفير البيانات (DEA) هي خوارزمية تشفير متماثلة من المحتمل أن تكون النظام الرئيسي الأكثر استخدامًا ، خاصة في حماية أمن البيانات المالية. تم تضمين إدارة مكافحة المخدرات التي تم تطويرها في البداية في الأجهزة. عادة ، تستخدم آلات الصراف الآلي (أجهزة الصراف الآلي) DEA. إنه يأتي من أعمال البحث في شركة IBM ، والتي كانت لها أيضًا حقوق براءات الاختراع لعدة سنوات ، ولكن بعد انتهاء صلاحيتها في عام 1983 ، فإنها في النطاق العام وتسمح باستخدامها في ظل ظروف معينة دون رسوم استخدام براءات الاختراع. تم تبنيها رسميًا من قبل حكومة الولايات المتحدة في عام 1977.
أعلن ظهور DESPIRES العملي بعد عام 1998 تمامًا أن خوارزمية DES لم تعد آمنة. في عام 1999 ، أصدر NIST معيارًا جديدًا ، ينص على أنه لا يمكن استخدام خوارزمية DES إلا في أنظمة التشفير القديمة ، ولكنها لا تقيد استخدام خوارزمية DESEDE. تطلق خوارزمية DES اليوم مرحلة التاريخ ، وتسمى خوارزمية AES بديلة.
مبدأ التشفير:
يستخدم DES مفتاح 56 بت مع بتات التكافؤ 8 بت إضافية لإنشاء حجم حزمة 64 بت أقصى. هذه كلمة مرور كتلة تكرارية باستخدام تقنية تسمى Feistel ، حيث تنقسم كتل النص المشفرة إلى قسمين. استخدم مفتاحًا فرعيًا لتطبيق وظيفة الحلقة على نصف ، ثم قم بإجراء عملية "حصرية أو" مع النصف الآخر ؛ ثم تبديل هذين النصف ، وستستمر العملية ، ولكن لن يتم تبديل الحلقة الأخيرة. يستخدم DES 16 دورة ، وأربع عمليات أساسية: عمليات الحصرية أو ، والاستبدال ، وعمليات التحول.
دعم JDK لـ DES خوارزمية
طول المفتاح: 56 بت
وضع العمل: ECB/CBC/PCBC/CTR/CTS/CFB/CFB8 إلى CFB128/OFB/OBF8 إلى OFB128
طريقة التعبئة: nopadding/pkcs5padding/iso10126padding/
تشفير جافا وفك التشفير خوارزمية التشفير المتماثل DEFORITH
DESEDE هي خوارزمية تشفير Triple DES ، والمعروفة أيضًا باسم 3Des أو Triple DES. استخدم ثلاثة (أو اثنين) مفاتيح مختلفة لتشفير كتلة البيانات ثلاث مرات (أو مرتين) من DES (تشفير مرة واحدة أسرع من القيام بالتشفير العادي ثلاث مرات). إن قوة Triple DES هي نفس القوة الرئيسية لـ 112 بت. يتم تحسين الأمن من خلال عدد التكرارات ، ولكنه يسبب أيضًا مشكلة كفاءة التشفير المنخفض. بسبب كفاءة خوارزمية DESEDE ، ولدت خوارزمية AES.
حتى الآن ، لم يمنح أحد طريقة فعالة لمهاجمة Triple des. إذا بحثت عن المفاتيح في مساحة المفاتيح الخاصة بها ، لأن المساحة كبيرة جدًا ، فهذا في الواقع غير ممكن. إذا تم استخدام طريقة الهجوم التفاضلي ، فإن التعقيد يزيد بشكل كبير مقارنة بـ DES واحد.
هناك أربعة نماذج من Triple des
رمز تشفير Java لـ des خوارزمية
package com.favccxx.codelib ؛ استيراد java.security.securerandom ؛ استيراد javax.crypto.cipher ؛ استيراد javax.crypto.secretke البايت الثابت العام [] Encrypt (Byte [] SRC ، Byte [] Key) يلقي الاستثناء {// des algorithm يتطلب رقم عشوائي موثوق به Securerandom sr = new Securerandom () ؛ // إنشاء كائن deskeyspec من بيانات المفاتيح الأصلية deskeyspec dks = جديد deskeyspec (مفتاح) ؛ // إنشاء مصنع رئيسي واستخدمه لتحويل deskeyspec إلى كائن secretkey secretKeyFactory keyfactory = secretKeyFactory.getInstance (des) ؛ SecretKey SecureKey = keyfactory.generateSecret (DKS) ؛ // كائن المشفر يكمل فعليًا عملية التشفير cipher cipher = cipher.getinstance (des) ؛ // تهيئة كائن الشفرات cipher.init (cipher.encrypt_mode ، securekey ، sr) ؛ // التنفيذ الرسمي لعملية التشفير الإرجاع cipher.dofinal (SRC) ؛ } / ***** param password password* param charption string* @return* / public final static string encrypt (سلسلة كلمة مرور ، مفتاح السلسلة) {try {return byte2string (Encrypt (password.getbytes () ، key.getbytes ())) ؛ } catch (استثناء e) {} return null ؛ } السلسلة الثابتة العامة byte2string (byte [] b) {string hs = "" ؛ String STMP = "" ؛ لـ (int n = 0 ؛ n <b.length ؛ n ++) {stmp = (java.lang.integer.toHexString (b [n] & 0xff)) ؛ if (stmp.length () == 1) HS = HS + "0" + STMP ؛ آخر HS = HS + STMP ؛ } إرجاع HS.ToupperCase () ؛ } الفراغ الثابت العام (سلسلة [] args) {string incryptString = Encrypt ("is Zhang Sanfeng" ، "اختبار الصيني والإنجليزية @123654 {") ؛ System.out.println (EncryptString) ؛ } // الإخراج: B00542E93695F4CFCE34FC4393C2F4BF} تنفيذ Java لخوارزمية des decryption
package com.favccxx.codelib ؛ import java.security.securerandom ؛ import javax.crypto.cipher ؛ import javax.crypto.secretke "des" ؛ / ** * * * param src source data source * @param مفتاح مفتاح ، يجب أن يكون الطول مضاعفات 8 * return * @throws استثناء */ بايت ثابت عام [] decrypt (byte [] src ، byte [] مفتاح) يلقي الاستثناء {// خوارزمية des يتطلب مصدرًا عشوائيًا موثوقًا securrandom sr = new securrandom () ؛ // إنشاء كائن deskeyspec من بيانات المفاتيح الأصلية deskeyspec dks = جديد deskeyspec (مفتاح) ؛ // إنشاء مصنع رئيسي ، ثم استخدمه لتحويل كائن deskeyspec إلى كائن secretkey secretKeyFactory keyFactory = secretKeyFactory.getInstance (des) ؛ SecretKey SecureKey = keyfactory.generateSecret (DKS) ؛ // كائن الشفرات يكمل فعليًا عملية التشفير التشفير = cipher.getinstance (des) ؛ . // التنفيذ الرسمي لعملية فك تشفير الإرجاع cipher.dofinal (SRC) ؛ } سلسلة ثابتة عامة Decrypt (بيانات السلسلة ، مفتاح السلسلة) {try {return new string (decrypt (string2byte (data.getBytes ()) ، key.getBytes ())) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } إرجاع فارغ ؛ } البايت الثابت العام [] string2byte (byte [] b) {if ((b.Length ٪ 2)! = 0) رمي غير alualtalargumentException ("الطول حتى") ؛ Byte [] B2 = New Byte [B.Length / 2] ؛ لـ (int n = 0 ؛ n <b.length ؛ n += 2) {string item = new string (b ، n ، 2) ؛ b2 [n / 2] = (byte) integer.parseint (البند ، 16) ؛ } return B2 ؛ } main static void main (string [] args) {String desencryptString = decrypt ("B00542E93695F4CFCE34FC4393C2F4BF" ، "اختبار الصينية والإنجليزية مختلطة @123654") ؛ System.out.println (desencryptstring) ؛ } // الإخراج: هل Zhang Sanfeng}آمل أن يكون هذا المقال مفيدًا لك. هذا كل شيء بالنسبة لك لتقديم محتوى التحليل لتنفيذ Java لتشفير DES وفك التشفير. آمل أن يستمر الجميع في متابعة موقعنا! إذا كنت ترغب في تعلم Java ، فيمكنك متابعة متابعة هذا الموقع.