التشفير باستخدام التجزئة Hashing في كوكب Kawkab
في عالم تطوير التطبيقات الحديثة، يعتبر التشفير (Hashing) أداةً أساسية لضمان أمان البيانات الحساسة مثل كلمات المرور، المفاتيح السرية، أو غيرها من المعلومات السرية. في كوكب Kawkab، نقدم دالتين رئيسيتين لمعالجة التشفير:
hash.generate
: لإنشاء بصمة (hash) للبيانات.hash.verify
: للتحقق من صحة البيانات مقارنةً بالبصمة.
ما هو التشفير Hashing؟
التشفير Hashing هو عملية تحويل البيانات إلى سلسلة فريدة من الأحرف (hash) باستخدام خوارزميات محددة. هذه السلسلة لا يمكن عكسها إلى البيانات الأصلية، مما يجعلها مثالية لتأمين البيانات الحساسة.
استخدامات التشفير:
- تأمين كلمات المرور: تُشفّر كلمات المرور وتُخزّن في قاعدة البيانات بدلاً من حفظها كنصوص واضحة.
- التحقق من النزاهة: يُستخدم لتأكيد أن البيانات لم يتم تعديلها أثناء النقل.
- التوقيعات الرقمية: لضمان هوية المرسل.
كيف يعمل التشفير في كوكب Kawkab؟
1. إنشاء التشفير باستخدام hash.generate
الدالة hash.generate
تُستخدم لإنشاء بصمة للبيانات. تُطبق خوارزمية تشفير قوية تُنتج سلسلة مميزة.
مثال:
import { hash } from "kawkab";
const password = "123456";
const hashedPassword = await hash.generate(password);
console.log(hashedPassword);
// الناتج: بصمة مشفرة مثل: "$2b$10$E8s1h...abc123"
خيارات إضافية:
يمكنك تخصيص قوة التشفير (salt rounds) بناءً على متطلبات الأمان.
const strongHash = await hash.generate(password, 10);
console.log(strongHash);
2. التحقق من التشفير باستخدام hash.verify
الدالة hash.verify
تُستخدم لمقارنة البيانات الأصلية مع بصمة مشفرة للتأكد من مطابقتها.
مثال:
import { hash } from "kawkab";
const password = "123456";
const hashedPassword = await hash.generate(password);
// التحقق من كلمة المرور المدخلة
const isMatch = await hash.verify(password, hashedPassword);
if (isMatch) {
console.log("كلمة المرور صحيحة.");
} else {
console.log("كلمة المرور غير صحيحة.");
}
سيناريوهات الاستخدام:
- التحقق من صحة كلمة المرور عند تسجيل الدخول.
- التحقق من سلامة البيانات أثناء نقل الملفات.
خيارات إضافية عند استخدام hash.generate
و hash.verify
1. التشفير باستخدام Salt Rounds
توفر إمكانية تحديد عدد جولات التشفير (Salt Rounds) لجعل البصمة أكثر أمانًا. كلما زادت الجولات، زادت قوة التشفير (لكنها تتطلب وقتًا أطول).
const customHashed = await hash.generate("mySecurePassword", 14);
2. التحقق مع خيارات مخصصة
الدالة hash.verify
تعمل بسلاسة مع القيم الافتراضية ولكن يمكن تخصيصها عند الحاجة.
أمثلة عملية
أ) حفظ كلمات المرور عند التسجيل
import { hash } from "kawkab";
async function registerUser(username: string, password: string) {
const hashedPassword = await hash.generate(password);
// حفظ الاسم وكلمة المرور المشفرة في قاعدة البيانات
console.log(`تم تسجيل المستخدم: ${username}, بكلمة مرور مشفرة: ${hashedPassword}`);
}
registerUser("Hassan", "password123");
ب) التحقق من كلمة المرور عند تسجيل الدخول
import { hash } from "kawkab";
async function loginUser(inputPassword: string, storedHash: string) {
const isMatch = await hash.verify(inputPassword, storedHash);
if (isMatch) {
console.log("تم تسجيل الدخول بنجاح.");
} else {
console.log("فشل تسجيل الدخول. كلمة المرور غير صحيحة.");
}
}
// مثال
loginUser("password123", "$2b$10$E8s1h...abc123");
ج) استخدام التشفير لحماية الملفات
import { hash } from "kawkab";
async function secureFile(fileContent: string) {
const fileHash = await hash.generate(fileContent);
console.log(`تم إنشاء بصمة للملف: ${fileHash}`);
}
secureFile("هذا هو محتوى الملف السري.");
نصائح عملية
- دائمًا قم بتخزين كلمات المرور كبصمة (Hash) في قاعدة البيانات.
- استخدم عدد كافٍ من Salt Rounds (بين 10-14 عادة) لضمان أمان التشفير.
- لا تحفظ البصمات في مكان يمكن الوصول إليه بسهولة.
مقارنة بين hash.generate و hash.verify
الدالة | الوظيفة | المدخلات | الناتج |
---|---|---|---|
hash.generate | إنشاء بصمة مشفرة | نص عادي + خيارات (اختياري) | سلسلة مشفرة |
hash.verify | التحقق من مطابقة النص مع البصمة | نص عادي + بصمة مشفرة | true إذا تطابقت أو false |
بهذا الشكل، يمكنك تحقيق مستوى أمان عالٍ باستخدام Hashing في كوكب Kawkab، وضمان حماية بيانات المستخدمين والتطبيقات.