ما هي مكتبة crypto-js؟
crypto-js هي مكتبة شائعة للغات JavaScript و TypeScript، توفر تطبيقات لخوارزميات التشفير القياسية. لا تتطلب Node.js وتعمل في المتصفح وعلى الخادم. في مشاريع TypeScript، تسمح crypto-js بتشفير وفك تشفير وتجزئة البيانات وإنشاء توقيعات HMAC بسهولة دون استخدام واجهات برمجة التطبيقات المشفرة الأصلية.
لماذا نحتاج التشفير في TypeScript؟
في تطبيقات الويب، غالباً ما تنشأ الحاجة لحماية البيانات: كلمات المرور، الرموز المميزة، الرسائل الشخصية. TypeScript بحد ذاته لا يوفر دوال تشفير، لذلك يستخدم المطورون المكتبات. تغطي crypto-js معظم الاحتياجات الأساسية: التجزئة (SHA-256, MD5)، التشفير المتماثل (AES, DES, Triple DES) و HMAC. هذا مهم للتخزين الآمن لكلمات المرور، تشفير البيانات قبل إرسالها إلى الخادم، أو للعمل مع JWT.
التثبيت
التثبيت عبر npm (أو yarn):npm install crypto-jsnpm install @types/crypto-js (لأنواع TypeScript)
الوظائف الأساسية
- التجزئة: SHA-256, SHA-512, MD5, SHA-1, RIPEMD-160
- التشفير المتماثل: AES, DES, Triple DES, Rabbit, RC4, RC4Drop
- HMAC: HMAC-SHA256, HMAC-MD5 وغيرها
- الترميز/فك الترميز: Base64, Hex, UTF-8, Latin1
مثال كود بلغة TypeScript
import CryptoJS from 'crypto-js';
// تجزئة SHA-256const hash = CryptoJS.SHA256('Hello, world!');console.log(hash.toString()); // سلسلة hex
// تشفير AESconst secretKey = 'my-secret-key';const encrypted = CryptoJS.AES.encrypt('Secret data', secretKey).toString();console.log('مشفر:', encrypted);
// فك التشفيرconst decrypted = CryptoJS.AES.decrypt(encrypted, secretKey);const plaintext = decrypted.toString(CryptoJS.enc.Utf8);console.log('مفكوك التشفير:', plaintext);
// HMAC-SHA256const hmac = CryptoJS.HmacSHA256('message', 'key');console.log('HMAC:', hmac.toString());
// MD5 (للتحقق من التكامل)const md5 = CryptoJS.MD5('data');console.log('MD5:', md5.toString());متى نستخدم crypto-js؟
- تشفير البيانات على العميل: مثلاً، قبل الإرسال إلى الخادم (لكن تذكر أن المفتاح قد يكون عرضة للاختراق).
- تجزئة كلمات المرور على الخادم: للتخزين في قاعدة البيانات (من الأفضل استخدام مكتبات متخصصة، لكن crypto-js مناسبة للحالات البسيطة).
- التحقق من تكامل الرسائل: باستخدام HMAC.
- توليد الرموز المميزة: مثلاً، للروابط ذات الاستخدام الواحد.
- العمل مع الأنظمة القديمة: حيث يتطلب الأمر MD5 أو DES.
هام: لا يُنصح باستخدام crypto-js للأنظمة عالية التحميل أو الحرجة أمنياً — استخدم Web Crypto API أو node:crypto. لكن للمهام النمطية والمشاريع الصغيرة، تظل حلاً بسيطاً ومريحاً.