---
title: "طريقة سهلة لتأمين بياناتكم الحساسة في Android"
description: "إليكم طريقة سهلة لتأمين بياناتكم الحساسة في Android"
canonical: https://oozou.com/ar/blog/an-easy-way-to-secure-your-sensitive-data-on-android-92
locale: ar
date: 2020-08-31
author: "OOZOU Team"
---

# طريقة سهلة لتأمين بياناتكم الحساسة في Android

> إليكم طريقة سهلة لتأمين بياناتكم الحساسة في Android

Published: 2020-08-31 · Author: OOZOU Team (Engineering) · 6 min read

عند بناء تطبيقات Android، يُعد التخزين الآمن للبيانات الحساسة مثل بيانات اعتماد المستخدم ورموز PIN والـ tokens أمرًا بالغ الأهمية. تقليديًا، تُستخدم **SharedPreferences** في Android لتخزين **أزواج المفتاح والقيمة (key-value pairs)** البسيطة، لكن البيانات المخزنة في **SharedPreferences** غير مشفرة افتراضيًا. وهذا يمثل خطرًا أمنيًا محتملًا على **البيانات الحساسة** المخزنة في التطبيق.

لحسن الحظ، تتيح **Encrypted Shared Preferences** في Android للمطوّرين **تشفير البيانات المخزنة في SharedPreferences**، فتوفر طريقة آمنة لتخزين المعلومات الحساسة. وتتوفر ميزة **Encrypted Shared Preferences** هذه عبر **مكتبة Android Security**، ما يسهّل حماية **البيانات المخزنة** على الجهاز.

في هذا المقال، سنستعرض كيفية تطبيق **Encrypted Shared Preferences** في Android، باستخدام **مكتبة Security** لحماية **المفاتيح والقيم** في **SharedPreferences**. سنغطي كل شيء، من إعداد **التشفير** إلى كيفية **تخزين البيانات** بطريقة آمنة، ونوضح طريقة عمل ذلك من خلال أمثلة برمجية.

# ما هي Encrypted Shared Preferences في Android؟

**Encrypted Shared Preferences** طريقة آمنة لتخزين **أزواج المفتاح والقيمة** في Android باستخدام **تشفير AES-256**. وهذه الميزة جزء من **مكتبة Android Security**، وتضمن أن **البيانات المخزنة في** SharedPreferences مشفرة سواء أثناء التخزين أو في الذاكرة. وعند استخدام **Encrypted Shared Preferences**، تُشفَّر المفاتيح والقيم معًا في **SharedPreferences**، ما يمنع الوصول غير المصرح به إلى **البيانات**.

**لماذا نستخدم Encrypted Shared Preferences؟**

- **حماية البيانات الحساسة**: مع **Encrypted Shared Preferences** يمكنكم تخزين البيانات الحساسة مثل كلمات المرور والـ tokens وتفضيلات المستخدم بأمان.
- **سهولة التطبيق**: تجعل **مكتبة Android Security** تشفير البيانات أمرًا بسيطًا من دون الحاجة إلى منطق تشفير مخصص.
- **مخزن مفاتيح مدعوم بالعتاد (Hardware-Backed Keystore)**: في الأجهزة الحديثة، يمكن لـ **Encrypted Shared Preferences** الاستفادة من **مخزن المفاتيح المدعوم بالعتاد** في الجهاز، ما يوفر أمانًا أقوى.

# كيفية استخدام Encrypted Shared Preferences في Android

لتبدأوا باستخدام **Encrypted Shared Preferences**، عليكم إعداد **مكتبة Android Security** في مشروعكم. إليكم الطريقة خطوة بخطوة.

**الخطوة 1: إضافة التبعيات (Dependencies)**

أضيفوا اعتمادية **مكتبة Security** إلى وحدة التطبيق (app module) في ملف build.gradle:

```
groovy
implementation 'androidx.security:security-crypto:1.1.0-alpha02'
```

توفر هذه المكتبة الأدوات اللازمة **لتشفير البيانات** في **SharedPreferences** وفي الملفات.

**الخطوة 2: تهيئة المفتاح الرئيسي (Master Key)**

قبل أن نستخدم **Encrypted Shared Preferences**، علينا إنشاء **MasterKey**. يُستخدم هذا المفتاح لتشفير **البيانات** وفك تشفيرها في **SharedPreferences**.

```
kotlin
val masterKey = MasterKey.Builder(applicationContext)
    .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
    .build()
```

يخزّن Android الـ **MasterKey** تلقائيًا بشكل آمن، وغالبًا في **مخزن المفاتيح المدعوم بالعتاد**، بحسب إمكانات الجهاز.

**الخطوة 3: إنشاء Encrypted Shared Preferences**

بعد ذلك، سننشئ نسخة (instance) من **EncryptedSharedPreferences**. يتيح لكم هذا الصنف تخزين **أزواج المفتاح والقيمة** بصيغة مشفرة.

```
kotlin
val sharedPreferences = EncryptedSharedPreferences.create(
    applicationContext,
    "encrypted_prefs",  // File name for SharedPreferences
    masterKey,          // Master key for encryption
    EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
    EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
```

- **"encrypted_prefs"**: اسم الملف الذي ستُخزَّن فيه البيانات المشفرة.
- **AES256_SIV**: مخطط التشفير الخاص بالمفاتيح.
- **AES256_GCM**: مخطط التشفير الخاص بالقيم.**الخطوة 4: تخزين البيانات واسترجاعها**

بعد تهيئة **Encrypted Shared Preferences**، يمكنكم تخزين البيانات واسترجاعها بالطريقة نفسها التي تتبعونها مع **SharedPreferences** العادية، لكن **البيانات المخزنة في** الملف ستكون الآن مشفرة.

**تخزين البيانات:**

```
kotlin
sharedPreferences.edit().putString("USER_PIN", "123456").apply()
```

**استرجاع البيانات:**

```
kotlin
val userPin = sharedPreferences.getString("USER_PIN", null)
```

في هذه الحالة، يُخزَّن **USER_PIN** بأمان في **Encrypted Shared Preferences**. تُشفَّر البيانات قبل حفظها، ويُفك تشفيرها تلقائيًا عند استرجاعها.

**الخطوة 5: عرض البيانات المشفرة**

إليكم شكل **البيانات المخزنة في** ملف **SharedPreferences** مشفر:

```
xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="__androidx_security_crypto_encrypted_prefs_key_keyset__">Encrypted...</string>
    <string name="__androidx_security_crypto_encrypted_prefs_value_keyset__">Encrypted...</string>
    <string name="ASN3dd30XLWQ87WqUN7/2k86i9gqavinCOsSI/Z9PHtW">Encrypted...</string>
</map>
```

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

# فوائد استخدام Encrypted Shared Preferences

1. **أمان البيانات**

يضمن استخدام **Encrypted Shared Preferences** تخزين البيانات الحساسة مثل كلمات المرور وتفضيلات المستخدم والـ tokens بأمان. ويحدث التشفير تلقائيًا، ما يقلل خطر كشف البيانات.

2. **سهولة التطبيق**

تبسّط **مكتبة Android Security** عملية إضافة التشفير إلى تطبيقكم. ويمكنكم دمجها في مشروعكم بسرعة من دون الحاجة إلى منطق تشفير معقد.

3. **التوافق**

تدعم المكتبة Android 6.0 (API 23) وما بعده، ما يجعلها متوافقة مع معظم أجهزة Android الحديثة.

4. **تشفير مدعوم بالعتاد**

في الأجهزة التي تدعمه، يضيف **مخزن المفاتيح المدعوم بالعتاد** طبقة أمان إضافية، إذ يضمن تخزين مفاتيح التشفير بأمان في العتاد وحمايتها من العبث.

5. **حماية المفاتيح والقيم معًا**

على عكس بعض أساليب التشفير التي تشفّر القيم فقط، تشفّر **Encrypted Shared Preferences** المفاتيح والقيم معًا، ما يوفر حماية متكاملة لبيانات تطبيقكم.

# الخلاصة: أسهل طريقة لتأمين البيانات في Android

تناولنا في هذا المقال كيفية استخدام **Encrypted Shared Preferences** في Android لتخزين **البيانات الحساسة** بأمان، مثل رموز PIN والـ tokens وتفضيلات المستخدم. وببضعة أسطر من الكود فقط، يمكنكم دمج **مكتبة Android Security** في تطبيقكم، لتحصلوا على طريقة متينة لتخزين البيانات المشفرة.

إنها طريقة سهلة وفعالة لحماية بيانات مستخدميكم، ومع نضج **مكتبة Android Security** ستستمر في تقديم ميزات أمان أقوى. ويُعد تطبيق **Encrypted Shared Preferences** خطوة أساسية نحو جعل تطبيقات Android أكثر أمانًا وحماية البيانات المخزنة فيها من الوصول غير المصرح به.

# الأسئلة الشائعة

**1\. ما هي Encrypted Shared Preferences في Android؟**تتيح لكم Encrypted Shared Preferences تخزين **أزواج المفتاح والقيمة** في **SharedPreferences** بأمان، عبر تشفير المفاتيح والقيم معًا باستخدام **تشفير AES-256**.

**2\. كيف أطبّق Encrypted Shared Preferences؟**لتطبيق **Encrypted Shared Preferences**، عليكم استخدام **مكتبة Android Security**، وإنشاء **MasterKey**، ثم استخدام **EncryptedSharedPreferences** لتخزين البيانات واسترجاعها بأمان.

**3\. هل يمكنني استخدام Encrypted Shared Preferences في إصدارات Android الأقدم؟**نعم، تدعم المكتبة Android 6.0 (API 23) وما بعده. وفي الأجهزة التي تعمل بإصدارات Android أقدم، يُستخدم **التشفير البرمجي (software-based encryption)**.

**4\. ما الفرق بين تخزين البيانات في Encrypted Shared Preferences وفي Shared Preferences العادية؟**في **SharedPreferences** العادية تُخزَّن البيانات كنص صريح (plaintext)، بينما في **Encrypted Shared Preferences** تُشفَّر المفاتيح والقيم معًا، ما يوفر أمانًا معززًا للبيانات الحساسة.

**5\. ما خوارزميات التشفير التي تستخدمها Encrypted Shared Preferences؟**EncryptedSharedPreferences** تستخدم **AES-256 SIV** لتشفير المفاتيح و**AES-256 GCM** لتشفير القيم.

**6\. هل التشفير في Encrypted Shared Preferences مدعوم بالعتاد؟**في الأجهزة التي تدعم ذلك، يُخزَّن **MasterKey** الذي تستخدمه **EncryptedSharedPreferences** في **مخزن مفاتيح مدعوم بالعتاد**، ما يوفر أمانًا إضافيًا بحماية مفاتيح التشفير في العتاد.

باستخدام **Encrypted Shared Preferences**، يمكنكم تأمين البيانات الحساسة في تطبيقات Android، وضمان تخزين معلومات المستخدمين بأمان تام.

---

Contact OOZOU: hello@oozou.com · +66 2544 0000 · https://oozou.com/ar/contact

More for AI agents: https://oozou.com/llms.txt · every page has a markdown twin at its URL plus ".md"
