إنشاء تجزئة SHA256 باستخدام OpenSSL وC
التجزئة هي تقنية تشفير تستخدم لإنشاء بصمة فريدة أو ملخص للبيانات. في حالة SHA256 (خوارزمية التجزئة الآمنة 2، 256 بت)، يكون هذا الملخص عبارة عن سلسلة سداسية عشرية 256 بت. يُستخدم SHA256 بشكل شائع للتحقق من سلامة البيانات، والتحقق من التوقيعات الرقمية، وتخزين كلمات المرور بشكل آمن.
في هذه المقالة، سنتعرف على كيفية إنشاء تجزئات SHA256 باستخدام مكتبة OpenSSL ورمز C.
تضمين رؤوس OpenSSL
للبدء، تأكد من أن لديك رؤوس OpenSSL متاحة لمترجم C الخاص بك. عادةً، يمكنك استخدام عبارة التضمين التالية:
#include
إنشاء سياق SHA256
بعد ذلك، نحتاج إلى إنشاء سياق SHA256 لتهيئة عملية التجزئة. يمكننا القيام بذلك باستخدام الكود التالي:
SHA256_CTX context;
SHA256_Init(&context);
تحديث سياق SHA256 بالبيانات
لإنشاء تجزئة، نحتاج إلى تغذية البيانات المراد تجزئتها في سياق SHA256. يمكننا القيام بذلك في أجزاء باستخدام وظيفة SHA256_Update():
SHA256_Update(&context, data, data_length);
وضع اللمسات الأخيرة على التجزئة
بمجرد تغذية جميع البيانات في سياق SHA256، يمكننا إنهاء التجزئة باستخدام وظيفة SHA256_Final():
unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256_Final(hash, &context);
يتم الآن تخزين التجزئة الناتجة في مصفوفة التجزئة.
التحويل إلى سلسلة سداسية عشرية
أخيرًا، نحن تحتاج إلى تحويل التجزئة الثنائية إلى سلسلة سداسية عشرية يمكن قراءتها بواسطة الإنسان:
char hex_hash[65];
for (int i = 0; i x", hash[i]);
}
hex_hash[64] = 0;
مثال للاستخدام
الآن بعد أن أصبح لدينا وظائفنا في مكانها الصحيح، يمكننا استخدامها لإنشاء تجزئة SHA256 حسب الحاجة. على سبيل المثال:// Generate a hash for a string
char hash_string[65];
SHA256_string("Hello, world!", hash_string);
// Generate a hash for a file
char hash_file[65];
SHA256_file("path/to/file", hash_file);
سيؤدي هذا إلى إنشاء تجزئة SHA256 للسلسلة أو الملف المحدد وتخزينه في المخزن المؤقت المقابل. تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3