مرحبا يا هبر! أقدم إليكم ترجمة المقالات 6 و 7 و 8 التي كتبها جاكوب جنكوف من سلسلة من المقالات للمبتدئين الذين يرغبون في تعلم أساسيات التشفير في جافا.
جدول المحتويات:
- تشفير جافا
- تشفير جافا
- MessageDigest
- ماك
- توقيع
- KeyPair
- KeyGenerator
- KeyPairGenerator
- تخزين المفاتيح
- Keytool
- شهادة
- CertificateFactory
- CertPath
زوج رئيسي
فئة KeyPair ( java.security.KeyPair ) هي زوج من المفاتيح غير المتماثلة (المفتاح العمومي + المفتاح الخاص). يتم استخدام مثيل KeyPair بشكل شائع في تشفير غير متماثل (تشفير البيانات أو التوقيع). عادة ، يتم الحصول على مثيل KeyPair من متجر مفاتيح Java أو KeyPairGenerator ، والذي سيتم مناقشته لاحقًا في هذه المقالة.
وصول المفتاح العام
يمكنك الوصول إلى المفتاح العمومي لمثيل KeyPair عن طريق استدعاء الأسلوب getPublic () الخاص به . مثال على الحصول على مفتاح عمومي:
PublicKey publicKey = keyPair.getPublic();
وصول المفتاح الخاص
يمكنك أيضًا الوصول إلى المفتاح الخاص لمثيل KeyPair عن طريق استدعاء الأسلوب getPrivate () الخاص به . فيما يلي مثال على الحصول على مفتاح خاص:
PrivateKey privateKey = keyPair.getPrivate();
مولد رئيسي
يتم استخدام فئة KeyGenerator ( javax.crypto.KeyGenerator ) لإنشاء مفاتيح تشفير متماثل. مفتاح التشفير المتماثل هو مفتاح يُستخدم لتشفير وفك تشفير البيانات باستخدام خوارزمية تشفير متماثل.
إنشاء مثيل KeyGenerator
قبل أن تتمكن من استخدام فئة KeyGenerator ، يجب عليك إنشاء مثيل KeyGenerator. يتم إنشاء مثيل KeyGenerator عن طريق استدعاء getInstance () الأسلوب الثابت ، كمعلمة تأخذ اسم خوارزمية التشفير التي يتم إنشاء المفتاح من أجلها. فيما يلي مثال على إنشاء مثيل لـ KeyGenerator:
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
ينشئ هذا المثال مثيل KeyGenerator الذي يمكنه إنشاء مفاتيح لخوارزمية تشفير AES.
KeyGenerator التهيئة
بعد إنشاء مثيل KeyGenerator ، يجب أن تقوم بتهيئته. تتم تهيئة مثيل عن طريق استدعاء الأسلوب init () . مثال تهيئة KeyGenerator:
SecureRandom secureRandom = new SecureRandom(); int keyBitSize = 256; keyGenerator.init(keyBitSize, secureRandom);
تقبل طريقة init () معلمتين: طول المفتاح و SecureRandom ، والذي يتم استخدامه أثناء إنشاء المفاتيح.
جيل المفتاح
بعد تهيئة مثيل KeyGenerator ، يمكنك استخدامه لإنشاء المفاتيح. يتم تنفيذ إنشاء المفتاح عن طريق استدعاء الأسلوب generKey () . فيما يلي مثال على إنشاء مفتاح متماثل:
SecretKey secretKey = keyGenerator.generateKey();
مولد الزوج الرئيسي
يتم استخدام فئة KeyPairGenerator ( java.security.KeyPairGenerator ) لإنشاء أزواج مفاتيح غير متماثلة. يتكون زوج من المفاتيح غير المتماثلة من مفتاحين: عادةً ما يتم استخدام المفتاح الأول لتشفير البيانات ، ويستخدم المفتاح الثاني لفك تشفير البيانات المشفرة باستخدام المفتاح الأول.
المفاتيح العامة والخاصة
أشهر نوع من زوج المفاتيح غير المتماثل هو نوع زوج المفاتيح في النموذج: المفتاح العمومي + المفتاح الخاص. يستخدم المفتاح الخاص لتشفير البيانات ، ويستخدم المفتاح العام لفك تشفير البيانات. في الواقع ، يمكنك أيضًا تشفير البيانات باستخدام المفتاح العمومي وفك تشفيرها باستخدام المفتاح الخاص. عادةً ما يتم الاحتفاظ بالمفتاح الخاص سرا ، وقد يكون المفتاح العام معروفًا للجميع. وبالتالي ، إذا قام جاك بتشفير بعض البيانات باستخدام مفتاحه الخاص ، فيمكن لأي شخص يمتلك مفتاح جاك العام فك تشفيرها.
إنشاء مثيل KeyPairGenerator
لاستخدام KeyPairGenerator ، يجب أولاً إنشاء مثيل لفئة KeyPairGenerator. يتم إنشاء مثيل KeyPairGenerator عن طريق استدعاء الأسلوب getInstance () . فيما يلي مثال على إنشاء مثيل:
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
تقبل طريقة getInstance () اسم خوارزمية التشفير المراد استخدامها. في هذا المثال ، نستخدم خوارزمية RSA.
تهيئة KeyPairGenerator
اعتمادًا على الخوارزمية ، قد تحتاج إلى تهيئة مثيل KeyPairGenerator. تتم تهيئة KeyPairGenerator عن طريق استدعاء أسلوب التهيئة () الخاص به . مثال تهيئة KeyPairGenerator:
keyPairGenerator.initialize(2048);
في هذا المثال ، تتم تهيئة KeyPairGenerator لإنشاء مفاتيح 2048 بت.
جيل زوج الرئيسية
لإنشاء زوج مفاتيح باستخدام KeyPairGenerator ، يتم استدعاء الأسلوب generKeyPair () . فيما يلي مثال على توليد زوج المفاتيح:
KeyPair keyPair = keyPairGenerator.generateKeyPair();