"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تأمين البيانات باستخدام تشفير وفك تشفير RSA عبر الأنظمة الأساسية

تأمين البيانات باستخدام تشفير وفك تشفير RSA عبر الأنظمة الأساسية

تم النشر بتاريخ 2024-11-08
تصفح:107

Securing Data with RSA Encryption and Decryption Across Platforms

مقدمة لتشفير RSA

في المشهد الرقمي اليوم، يعد تأمين البيانات الحساسة أمرًا بالغ الأهمية للأفراد والمؤسسات على حدٍ سواء. يبرز تشفير RSA (Rivest-Shamir-Adleman) كحل قوي لحماية البيانات. إنها خوارزمية تشفير غير متماثلة، مما يعني أنها تستخدم زوجًا من المفاتيح: مفتاح عام للتشفير ومفتاح خاص لفك التشفير. إحدى الفوائد الرئيسية لتشفير RSA هي أن المفتاح الخاص لا يحتاج أبدًا إلى مشاركته، مما يقلل من خطر تعرضه للخطر.

يستكشف هذا المقال كيفية استخدام تشفير RSA عبر ثلاث لغات برمجة شائعة — JavaScript وPython وPHP — مما يسهل تأمين البيانات في التطبيقات عبر الأنظمة الأساسية.

التشفير وفك التشفير عبر الأنظمة الأساسية: السيناريو

تخيل أنك تقوم بإنشاء تطبيق ويب حيث يجب نقل المعلومات الحساسة (مثل بيانات المصادقة أو التفاصيل الشخصية) بشكل آمن بين العميل (الواجهة الأمامية) والخادم (الواجهة الخلفية). على سبيل المثال، يمكنك تشفير رسالة من جانب العميل في JavaScript ثم فك تشفيرها على الخادم باستخدام Python أو PHP.

يعتبر RSA مناسبًا تمامًا لهذا السيناريو لأنه يوفر مرونة التشفير في لغة واحدة وفك التشفير في لغة أخرى، مما يضمن التوافق عبر الأنظمة الأساسية.

تنفيذ RSA: JavaScript وPython وPHP

جافا سكريبت (Next.js مع JSEncrypt)
التشفير:

import JSEncrypt from 'jsencrypt';

// Function to encrypt a message using a public key
const encryptWithPublicKey = (message) => {
  const encryptor = new JSEncrypt();
  const publicKey = process.env.NEXT_PUBLIC_PUBLIC_KEY.replace(/\\n/g, "\n");
  encryptor.setPublicKey(publicKey);
  const encryptedMessage = encryptor.encrypt(message);
  return encryptedMessage;
};

فك التشفير:

import JSEncrypt from 'jsencrypt';

// Function to decrypt a message using a private key
const decryptWithPrivateKey = (encryptedMessage) => {
  const decryptor = new JSEncrypt();
  const privateKey = process.env.PRIVATE_KEY.replace(/\\n/g, "\n");
  decryptor.setPrivateKey(privateKey);
  const decryptedMessage = decryptor.decrypt(encryptedMessage);
  return decryptedMessage;
};

توضيح:

تشفير المفتاح العام: تقوم مكتبة JSEncrypt بتشفير الرسالة باستخدام المفتاح العام. وهذا يضمن أن المفتاح الخاص المقابل فقط يمكنه فك تشفيره.
فك تشفير المفتاح الخاص: يتم فك تشفير الرسالة باستخدام المفتاح الخاص، والذي يتم تخزينه بشكل آمن في متغير البيئة.
الاعتبارات الأمنية: باستخدام RSA، نضمن أن البيانات المرسلة من العميل مشفرة وآمنة.

بايثون (باستخدام مكتبة RSA)
التشفير:

import rsa
import base64

def encrypt_with_public_key(message: str, public_key_str: str) -> str:
    public_key = rsa.PublicKey.load_pkcs1_openssl_pem(public_key_str.encode())
    encrypted_message = rsa.encrypt(message.encode(), public_key)
    return base64.b64encode(encrypted_message).decode()

فك التشفير:

import rsa
import base64

def decrypt_with_private_key(encrypted_message: str, private_key_str: str) -> str:
    private_key = rsa.PrivateKey.load_pkcs1(private_key_str.encode())
    encrypted_bytes = base64.b64decode(encrypted_message.encode())
    decrypted_message = rsa.decrypt(encrypted_bytes, private_key)
    return decrypted_message.decode()

توضيح:

تشفير المفتاح العام: يتم تشفير الرسالة باستخدام مفتاح عام، مما يضمن أن حامل المفتاح الخاص المقصود فقط يمكنه فك تشفيرها.
تشفير Base64: بعد التشفير، يتم تشفير الرسالة Base64 لضمان التوافق مع نقل النص.
فك تشفير المفتاح الخاص: يتم استخدام المفتاح الخاص لفك تشفير الرسالة المشفرة باستخدام Base64، مما يضمن السرية.

PHP (باستخدام OpenSSL)
التشفير:

function encrypt_with_public_key($message) {
    $publicKey = getenv('PUBLIC_KEY');
    openssl_public_encrypt($message, $encrypted, $publicKey);
    return base64_encode($encrypted);
}

فك التشفير:

function decrypt_with_private_key($encryptedMessage) {
    $privateKey = getenv('PRIVATE_KEY');
    $encryptedData = base64_decode($encryptedMessage);
    openssl_private_decrypt($encryptedData, $decrypted, $privateKey);
    return $decrypted;
}

توضيح:

تشفير المفتاح العام: تقوم وظيفة openssl_public_encrypt بتشفير الرسالة باستخدام المفتاح العام، مما يضمن أن المفتاح الخاص فقط هو الذي يمكنه فك تشفيرها.
فك تشفير المفتاح الخاص: تقوم وظيفة openssl_private_decrypt بفك تشفير الرسالة باستخدام المفتاح الخاص، مما يضمن بقاء المعلومات الحساسة آمنة.
متغيرات البيئة: يتم تخزين المفاتيح العامة والخاصة بشكل آمن في متغيرات البيئة، مما يعزز الأمان.

أفضل الممارسات للتشفير

استخدام متغيرات البيئة: قم دائمًا بتخزين مفاتيحك في متغيرات البيئة بدلاً من تشفيرها في التطبيق الخاص بك. وهذا يقلل من خطر الكشف عن المعلومات الحساسة.
تشفير البيانات الحساسة: تشفير البيانات الشخصية والحساسة مثل كلمات المرور أو التفاصيل المالية أو معلومات التعريف الشخصية (PII) لمنع الوصول غير المصرح به.
استخدم HTTPS: تأكد من أن تطبيقك يتصل عبر HTTPS لحماية البيانات أثناء النقل.
إدارة المفاتيح الآمنة: قم بتدوير مفاتيح التشفير بانتظام وتأكد من تخزينها بشكل آمن.

لماذا تختار تشفير RSA؟

أمان البيانات المحسن: يضمن تشفير RSA الحفاظ على أمان البيانات الحساسة أثناء النقل، مما يمنع الوصول غير المصرح به.
التشفير غير المتماثل: يستخدم RSA مفتاحًا عامًا للتشفير ومفتاحًا خاصًا لفك التشفير، مما يضمن عدم الحاجة مطلقًا إلى مشاركة المفتاح الخاص.
التوافق عبر الأنظمة الأساسية: يعمل RSA بسلاسة عبر منصات ولغات برمجة مختلفة، مما يجعله مثاليًا لتطبيقات الويب حيث يتم استخدام تقنيات مختلفة على جانبي العميل والخادم.

خاتمة

يوفر تشفير RSA طريقة موثوقة لتأمين البيانات الحساسة عبر بيئات برمجة متعددة. من خلال تنفيذ تشفير RSA وفك التشفير في JavaScript وPython وPHP، يمكنك حماية المعلومات الحساسة وتعزيز الأمان وضمان التوافق عبر الأنظمة الأساسية. سواء كان الأمر يتعلق بتأمين مكالمات واجهة برمجة التطبيقات (API)، أو حماية بيانات المستخدم، أو ضمان سرية الرسائل، فإن RSA توفر حلاً قويًا للتشفير.

إذا وجدت هذا الدليل مفيدًا، ففكر في مشاركته مع زملائك من المطورين، وترقب المزيد من الأفكار حول التشفير وأمن البيانات!

التشفير #RSA #CyberSecurity #DataSecurity #WebDevelopment #CrossPlatformSecurity #JavaScript #Python #PHP

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/shubhamkhan/securing-data-with-rsa-encryption-and-decryption-across-platforms-30d7?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3