مرحبا يا هبر! أقدم إليكم ترجمة المقال الخامس "توقيع جافا" لجاكوب جينكوف من سلسلة من المقالات للمبتدئين الذين يرغبون في تعلم أساسيات التشفير في جافا.
جدول المحتويات:
- تشفير جافا
- تشفير جافا
- MessageDigest
- ماك
- توقيع
- KeyPair
- KeyGenerator
- KeyPairGenerator
- تخزين المفاتيح
- Keytool
- شهادة
- CertificateFactory
- CertPath
توقيع جافا
فئة التوقيع ( java.security.Signature ) تنشئ توقيعًا رقميًا للبيانات الثنائية. التوقيع الرقمي عبارة عن ملخص للرسائل مشفر بالمفتاح الخاص لزوج مفاتيح خاص / عام. يمكن لأي شخص يملك المفتاح العمومي التحقق من التوقيع الرقمي.
إنشاء مثيل التوقيع
قبل أن تتمكن من استخدام فئة التوقيع ، يجب إنشاء مثيل لهذه الفئة عن طريق استدعاء getInstance () الأسلوب الثابت. فيما يلي مثال يتم فيه إنشاء مثيل التوقيع:
Signature signature = Signature.getInstance("SHA256WithDSA");
تحدد معلمة السلسلة التي تم تمريرها إلى أسلوب getInstance () خوارزمية تشفير التوقيع الرقمي المستخدمة.
تهيئة مثيل التوقيع
بعد إنشاء مثيل التوقيع ، تحتاج إلى تهيئته قبل البدء في استخدامه. تتم تهيئة مثيل التوقيع عن طريق استدعاء أسلوب init () الخاص به . مثال على تهيئة مثيل توقيع Java:
SecureRandom secureRandom = new SecureRandom(); KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA"); KeyPair keyPair = keyPairGenerator.generateKeyPair(); signature.initSign(keyPair.getPrivate(), secureRandom);
كما ترى ، تتم تهيئة مثيل التوقيع باستخدام المفتاح الخاص لزوج المفتاح السري / العام ومثيل SecureRandom.
إنشاء التوقيع الرقمي
عند تهيئة مثيل التوقيع ، يمكنك استخدامه لإنشاء التواقيع الرقمية. يتم إنشاء توقيع رقمي عن طريق استدعاء طريقة التحديث () مرة واحدة أو أكثر) وتنتهي بمكالمة للتوقيع () . مثال على إنشاء توقيع رقمي للبيانات الثنائية:
byte[] data = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); signature.update(data); byte[] digitalSignature = signature.sign();
التحقق من التوقيع الرقمي
إذا كنت ترغب في التحقق من توقيع رقمي أنشأه شخص آخر ، فيجب عليك تهيئة مثيل التوقيع في وضع التحقق (بدلاً من وضع التوقيع). هذه هي الطريقة التي يبدو بها تهيئة مثيل التوقيع في وضع التحقق من الصحة:
Signature signature = Signature.getInstance("SHA256WithDSA"); signature.initVerify(keyPair.getPublic());
لاحظ أنه يتم الآن تهيئة مثيل التوقيع في وضع التحقق ، ويمر بالمفتاح العام لزوج المفاتيح كمعلمة. بعد التهيئة في وضع التحقق ، يمكنك استخدام مثيل التوقيع للتحقق من التوقيع الرقمي:
byte[] data2 = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); signature2.update(data2); boolean verified = signature2.verify(digitalSignature);