التشفير في TypeScript: نظرة عامة على مكتبة crypto-js

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هي مكتبة 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-js
npm 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. لكن للمهام النمطية والمشاريع الصغيرة، تظل حلاً بسيطاً ومريحاً.

توصيات