C/C++

التشفير باستخدام مكتبة OpenSSL - مثال عملي

OpenSSL

أصبح التشفير(التعمية)أحد المتطلبات الشائعة جداً في صناعة البرمجيات، ومن الطبيعي أن تجد نفسك بحاجة لاستخدام شيء من التشفير حتى عند تطويرك لبرامج بسيطة. هناك خوارزميات شائعة للتشفير ويمكنك العثور على الكثير من الموارد التي تشرحها بالتفصيل على الانترنت. وبالنسبة لتطبيق هذه الخوارزميات فأنت أيضاً أمام خيارات كثيرة حسب لغة البرمجة أو أداة التطوير التي تستخدمها. طبعاً يمكنك أنت أيضاً أن تقوم بتطوير أو كتابة تطبيق implementation لهذه الخوازميات بنفسك واستخدامه من ثم في برامجك، إلا أن هذا الأمر غير محبّذ ولا ينصح به، كما أنه من غير المحبّذ الاعتماد على خوارزميات تشفير خاصة تم تطويرها من قبلك، إذ إنه من الأفضل في مجال التشفير بالتحديد اللجوء لاستخدام نصوص مصدرية أو تطبيقات implementations تم ويتم اختبارها ومراجعتها باستمرار من قبل جهات ومطورين ومختصين في مجال البرمجة والتشفير، بهذا أنت تضمن أن تطبيق خوارزمية التشفير الذي ستستخدمه هو خالي من العيوب والثغرات. وفي هذا السياق تأتي OpenSSL كخيار ممتاز حيث تعتبر من أكثر المكاتب استخداماً بالاضافة إلى أنها مفتوحة المصدر وتحظى بكثير من المتابعة والاهتمام من قبل مبرمجين ومختصين من مختلف أنحاء العالم.

Articles Categories: 

مكتبة تفقيط الأرقام باللغة العربية مفتوحة المصدر بلغة السي

هناك حلول برمجية كثيرة لتفقيط الأرقام باللغة العربية (إعطاء قراءة الرقم باللغة العربية). المشكلة في هذه الحلول المتوفرة أنها محدودة باللغة التي كتبت بها ويصعب استخدامها في لغات أو بيئات تطوير أخرى، وقد بات من المعروف اليوم أنه من النادر أن تستخدم لغة واحدة في تطوير المشاريع الحقيقية، فالحاجة إلى تقديم حل برمجي حديث، متكامل، وبجودة عالية، وضمن زمن محدد سوف يحتّم على المبرمج استخدام أكثر من لغة أو أداة تطوير. هذا يعني أنه إذا اضطر لاستخدام التفقيط في مشروعه فإنه سيستخدم أكثر من حل/منتج للقيام بعمل واحد وهو تفقيط الأرقام، وعند حاجته إلى تعديل/تصحيح ما في عملية التفقيط فإنه سيضطر لتنفيذ هذا التعديل في أكثر من لغة. المشكلة الأخرى الموجودة في حلول التفقيط الحالية هي أنها مخصصة بشكل كبير لتفقيط الأرقام/المبالغ المالية، وبعضها محدد بعملة/عملات معينة وتحتاج لتعديل برمجي لإضافة عملة أخرى.

هذه المشاكل التي عرضتها دفعتني لكتابة/برمجة مكتبة التفقيط num2a. لقد قمت بكتابة هذه المكتبة بلغة C لأنها من وجهة نظري اللغة الأكثر "محمولية" portability، حيث تستطيع ترجمة (compile) أي نص مصدري في C على منصات مختلفة وباستخدام مترجمات (compilers ) مختلفة وقد لاتضطر في كثير من الأحيان سوى إلى إجراء تعديلات طفيفة. ولزيادة محمولية مكتبة التفقيط num2a تعمدت في برمجتها عدم الاستعانة أو استخدام إي مكتبة خارجية، بما فيها المكتبة الرياضية math.h.

Articles Categories: 

Build giflib for Windows using Visual Studio 2010/2015

Giflib is c library which can be used to read/write the GIF file format. Even giflib is an old library but still very helpful and many libraries/tools still depend on it.

giflib4.x
giflib-4.1.4 has Windows Visual studio package, you can find it here, this package is for visual studio 6 which is also an old version but I think it will be easy to convert this project into newer visual studio versions.

Articles Categories: 

بناء حزمة تثبيت محمية برقم تسلسلي باستخدام VSI, Orca, C++ or Delphi


Read the English version of this article in codeproject.


نشرت النسخة الانكليزية لهذا المقال في موقع codeproject.

مقدمة

تستطيع من خلال فيجوال ستوديو بناء حزم تثبيت لبرامجك باستخدام Visual Studio Installer او أختصاراً VSI وتستطيع من خلال هذه الأداة أيضاً أن تضيف مربع حوار إلى حزمة التثبيت لتسجيل بيانات المستخدم: الاسم، الشركة، والرقم التسلسلي (السريال). يقدم VSI إمكانيات محدودة لعملية التحقق من الرقم التسلسلي مما سيجبرك على استخدام نماذج أرقام تسلسلية Serial Number Templates سهلة التخمين و ليست بحاجة حتى إلى برامج كراك لكسرها في كثير من الأحيان. الحل الأمثل هنا هو الاستغناء عن خوارزمية التحقق المدمجة في VSI واستخدام خوارزمياتك الخاصة عن طريق مكاتب خارجية dll تستطيع كتابتها بأي لغة أصلية native مثل دلفي أو سي بلس بلس -سأعرض مثالاً باللغتين- وعندها ستكون حدودك هي السماء في بناء نماذج أرقام تسلسلية لحماية برامجك. وجدت مقالات قليلة تشرح هذه الطريقة وبالاضافة إلى قلتها فالبعض منها فيه أخطاء قد تؤدي إلى توجيهك باتجاه خاطئ وإضاعة وقتك الثمين خصوصاً إذا كنت جديداً على هذا المجال. لذلك قررت كتابة هذا المقال بالعربية و الانكليزية أيضاً راجياً أن يكون فيه شيء من الفائدة لمن يهتم بهذا الموضوع.

Articles Categories: