مرحبا يا هبر! أقدم إليكم ترجمة المقال الرابع "Java Mac" للمخرج Jakob Jenkov من سلسلة من المقالات للمبتدئين الذين يرغبون في تعلم أساسيات التشفير في Java.
جدول المحتويات:
- تشفير جافا
- تشفير جافا
- MessageDigest
- ماك
- توقيع
- KeyPair
- KeyGenerator
- KeyPairGenerator
- تخزين المفاتيح
- Keytool
- شهادة
- CertificateFactory
- CertPath
رمز مصادقة الرسائل (MAC)
ينشئ Java Mac ( javax.crypto.Mac ) رمز مصادقة الرسائل (MAC) من البيانات الثنائية. MAC عبارة عن خلاصة رسالة مشفرة باستخدام مفتاح سري. فقط باستخدام مفتاح سري يمكنك التحقق من صحة MAC.
إنشاء مثيل
قبل استخدام فئة Mac ، يجب إنشاء مثيل لنظام Mac. يتم إنشاء مثيل لفئة Mac باستخدام أسلوب getInstance () . فيما يلي مثال على إنشاء مثيل لنظام Mac:
Mac mac = Mac.getInstance("HmacSHA256");
تحتوي معلمة السلسلة التي تم تمريرها إلى getInstance () على اسم الخوارزمية المستخدمة. في هذه الحالة ، يتم استخدام خوارزمية HmacSHA256.
التهيئة
بعد إنشاء المثيل ، يجب تهيئة Mac. تتم تهيئة مثيل Mac عن طريق استدعاء الأسلوب init () ، بتمرير المفتاح السري الذي سيتم استخدامه بواسطة المثيل كمعلمة. فيما يلي مثال على تهيئة مثيل Mac:
byte[] keyBytes = new byte[]{0,1,2,3,4,5,6,7,8 ,9,10,11,12,13,14,15}; String algorithm = "RawBytes"; SecretKeySpec key = new SecretKeySpec(keyBytes, algorithm); mac.init(key);
يقبل الأسلوب init () مثيل Key . يستخدم هذا المثال SecretKeySpec ، الذي ينفذ واجهة المفتاح.
حساب MAC
باستخدام مثيل MAC (بعد التهيئة) ، يمكنك البدء في حساب بيانات MAC. لحساب قيمة MAC ، يمكنك استدعاء التحديث () أو طريقة doFinal () . إذا كان لديك كتلة بيانات واحدة فقط لحساب MAC ، يمكنك الاتصال مباشرة بـ doFinal () ، على سبيل المثال:
byte[] data = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); byte[] macBytes = mac.doFinal(data);
إذا كان لديك العديد من كتل البيانات لحساب MAC ، على سبيل المثال ، إذا كنت تقرأ كتلة الملف من كتلة ، فيجب عليك استدعاء طريقة التحديث () لكل كتلة وتنتهي بـ doFinal () في آخر كتلة. هنا مثال:
byte[] data = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); byte[] data2 = "0123456789".getBytes("UTF-8"); mac.update(data); mac.update(data2); byte[] macBytes = mac.doFinal();