التشفير في جافا. KeyPair Class

مرحبا يا هبر! أقدم إليكم ترجمة المقالات 6 و 7 و 8 التي كتبها جاكوب جنكوف من سلسلة من المقالات للمبتدئين الذين يرغبون في تعلم أساسيات التشفير في جافا.


جدول المحتويات:


  1. تشفير جافا
  2. تشفير جافا
  3. MessageDigest
  4. ماك
  5. توقيع
  6. KeyPair
  7. KeyGenerator
  8. KeyPairGenerator
  9. تخزين المفاتيح
  10. Keytool
  11. شهادة
  12. CertificateFactory
  13. 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(); 

Source: https://habr.com/ru/post/ar445560/


All Articles